为什么flash会消耗不同的内存量来创建数组并创建一个包含数组的类?

时间:2014-05-06 04:18:48

标签: actionscript-3 flash memory memory-management

我正在尝试查找AS3中有多少不同的数据结构消耗内存。

我发现创建一个简单的数组对象消耗了76个字节:

var arr:Array = new Array();
trace(getSize(arr));

然而,创建一个包含数组的简单类显示了20个字节:

var t:Testing2 = new Testing2();
trace(getSize(t));

以下是该课程的内容:

package {
    import flash.sampler.StackFrame;
    import flash.display.Bitmap;
    import flash.display.Sprite;

    public class Testing2 {

        private var arr:Array;

        public function Testing2() {
            // constructor code
            arr = new Array();
        }
    }
}

我很困惑。为什么会出现这种情况?

1 个答案:

答案 0 :(得分:7)

在这种情况下,getSize()不会对对象中的所有引用求和 - 只是指向类的指针引用的大小。它是t对象指针的大小。

不反映对象内部的引用。

示例:

trace(getSize(t));      // 12-bytes
trace(getSize(t.arr));  // 32-bytes

这将有助于分析指向同一内存模型的众多实例的大小。

其他示例包括BitmapsBitmapDataByteArrays,其中getSize()不反映对象实例保留的内存。

使用getSize()适用于primitive types,对代码进行基准测试以确定任务的最有效对象。