【问题标题】:ActionScript - Difference Between Primitive / Non-Primitive Objects for Memory Management?ActionScript - 用于内存管理的原始/非原始对象之间的区别?
【发布时间】:2011-07-04 10:16:10
【问题描述】:

我的理解是一个类的原始类型(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;
        }
    }
}

如果这是真的,我相信这是真的,那么关于内存分配,原始类型的对象和非原始类型的对象有什么区别?

【问题讨论】:

    标签: actionscript-3 memory-management garbage-collection primitive-types


    【解决方案1】:

    据我所知,flash player 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 无能为力。

    编辑刚刚记起了格兰特·斯金纳(Grant Skinner)的另一个nice set of articles on GC and resource management

    【讨论】:

    【解决方案2】:

    GC 会移除未被任何对象强引用的对象。根本不引用原始类型字段 - 它们的值直接存储在包含对象的内存中(至少我是这么认为的)。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 2017-07-16
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 2012-07-19
      • 1970-01-01
      • 2013-09-26
      相关资源
      最近更新 更多