Собственно, несложный тест показывает, что присвоение null ничего не дает:

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.system.*;
public class Main extends Sprite
{
private var testXML:XML;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
checkMemory("before init testXML:");
testXML = generateXML();
checkMemory("after init testXML:");
testXML = null;
checkMemory("after testXML=null:");
}
private function checkMemory(label:String) : void
{
System.gc();
trace("Main::checkMemory", label, System.totalMemory);
}
private function generateXML() : XML
{
var xml:XML = new XML();
for (var i:int = 0; i < 1000; i++)
{
var child:XML = XML('<random/>');
child.@value = Math.random();
xml.appendChild(child)
}
return xml;
}
}
}
Вывод:

Код:
Main::checkMemory before init testXML: 3375104
Main::checkMemory after init testXML: 3641344
Main::checkMemory after testXML=null: 3641344