Tree Fractal memory problem

I am having a memory problem. There seems to be something getting stuck in memory but i can figure out what it is. I am either begin left with around 100mb or 35mb in memory when the only thing left is a 500x500 bitmap. Any help would be great.


package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Graphics;
	import flash.display.GraphicsEndFill;
	import flash.display.GraphicsPath;
	import flash.display.GraphicsSolidFill;
	import flash.display.GraphicsStroke;
	import flash.display.IGraphicsData;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.sampler.getSize;
	
	/**
	 * @author Ben Rubin
	 */
	
	public class Main extends Sprite 
	{
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
			
		}
		
		private const steps:int = 18;
		private var commands:Vector.<int>;
		private var pathData:Vector.<Number>;
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			commands = new Vector.<int>();
			pathData = new Vector.<Number>();
			
			generateTree((Math.PI / 180 * 90), 256, 400, 100, 0);
			
			drawTree(commands, pathData);
		}
		
		
		private function generateTree(angle:Number, x:Number, y:Number, length:Number, count:int):void {
			if ( count < steps) {
				var _length:Number = length * 0.8
				var newX:Number = x - Math.cos(angle) * _length;
				var newY:Number = y - Math.sin(angle) * _length;
				
				pathData.push(x, y, newX, newY);
				commands.push(1, 2);
				
				generateTree(angle * 1.2, newX, newY, _length, count + 1);
				generateTree(angle * 0.9, newX, newY, _length, count + 1);
				
			}
		}
		
		private function drawTree(pathCommands:Vector.<int>, path:Vector.<Number>):void {
			var graphicData:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
			var shape:Shape = new Shape();
			
			var stroke:GraphicsStroke = new GraphicsStroke(1); 
			stroke.fill = new GraphicsSolidFill(0x444444);
			
			var pathway:GraphicsPath = new GraphicsPath(pathCommands, path);
			var end:GraphicsEndFill = new GraphicsEndFill();
			graphicData.push(stroke, pathway, end);
			
			shape.graphics.drawGraphicsData(graphicData);
			var bmd:BitmapData = new BitmapData(500, 500, false);
			bmd.draw(shape);
			stage.addChild(new Bitmap(bmd));
			
			shape.graphics.clear();
			shape = null;
			graphicData = null;
			stroke = null;
			pathway = null;
			pathCommands = null;
			path = null;
			commands = null;
			pathData = null;
		}
	}
}