我的理解是,对于垃圾收集,类的基本类型( uint,string,Number等)不需要设置为null。
例如,我不需要在以下类中编写此dispose()
方法:
package
{
//Imports
import flash.display.Shape;
//Class
public class DrawSquare extends Shape
{
//Properties
private var squareColorProperty:uint;
//Constructor
public function DrawSquare(squareColor:uint)
{
squareColorProperty = squareColor;
init();
}
//Initialize
private function init():void
{
graphics.beginFill(shapeColorProperty);
graphics.drawRect(0, 0, 200, 200);
graphics.endFill();
}
//Dispose
public function dispose():void
{
squareColorProperty = null;
}
//Get Shape Color
public function get squareColor():uint;
{
return squareColorProperty;
}
}
}
如果这是真的,我相信它是什么,原始类型的对象和非原始类型的对象有关内存分配的区别是什么?
答案 0 :(得分:6)
据我所知,Flash播放器VM中GC逻辑的最完整详细说明位于in the blog of Alex Harui, written back in 2007。直接链接:GCAtomic.ppt。
And here are some useful hints on GC from Grant Skinner.
GC逻辑处理引用和引用计数。由于您无法在ActionScript中获取对基元的引用,因此您无法在此方面对GC执行任何操作。
编辑刚刚记得格兰特斯金纳的另一个nice set of articles on GC and resource management。
答案 1 :(得分:1)
GC会删除任何对象未强引用的对象。根本没有引用原始类型字段 - 它们的值直接存储在包含对象的内存中(至少我认为是这样)。
我希望它有所帮助。