codice:
var sprite:Sprite=new Sprite();
addChild(sprite);
removeChild(sprite);
trace(sprite);
sprite=null;
trace(sprite);
Non credo che questo funzioni poi così tanto bene..
Ho fatto dei test...
codice:
	public class Main extends MovieClip{
		private var mc:Clip;
		public function Main(){
			mc = new Clip();
			addChild(mc);
			trace('Prima di remove '+mc); //Prima di remove [object Clip]
			removeChild(mc);
			trace('Dopo di remove '+mc); //Dopo di remove [object Clip]
			mc=null;
			trace('Dopo di null '+mc); //Dopo di null null
		}
	}
"Clip" è la classe data come linkage (concatenamento) ad un quadrato verde in libreria..
Nel file Clip.as ho scritto:
codice:
	public class Clip extends MovieClip{
		public function Clip(){
			trace('Clip istanziato');
			this.addEventListener(Event.ENTER_FRAME,Mov);
		}
		private function Mov(e:Event):void{
			trace(this);
		}
	}
Mandato in esecuzione il filmato questo è quello che è uscito in Output:
codice:
Clip istanziato
Prima di remove [object Clip]
Dopo di remove [object Clip]
Dopo di null null
[object Clip]
[object Clip]
[object Clip]
[object Clip]
[object Clip]
[object Clip]
[object Clip]
[object Clip]
[object Clip]
[object Clip]
Dove [object Clip] si ripete all'infinito..

Fate le vostre considerazioni...
Il problema è abbastanza serio in quando in molte applicazioni certe classi, ad esempio, gestiscono griglie fotografiche con all'interno parecchi MovieClip e Listeners ed il fatto che per eliminare l'eccesso di calcoli e spazio in memoria bisognerebbe andare a eliminarli uno per uno oltre che essere un palla colossale significherebbe che da qui in avanti ogni applicazione dorebbe essere costruita con dei vettori, o altro, che tengono conto di tutto ciò che può essere eliminato...
Se qualcuno è riuscito a risolvere il problema alla radice vi prego rispondete..