Actionscript 3 为什么flash在创建数组和创建包含数组的类时会消耗不同数量的内存?

Actionscript 3 为什么flash在创建数组和创建包含数组的类时会消耗不同数量的内存?,actionscript-3,flash,memory,memory-management,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 fla

我在试验发现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();
        }
    }
}
我很困惑。为什么会出现这种行为?

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

对象内的引用不会被反射

例如:

trace(getSize(t));      // 12-bytes
trace(getSize(t.arr));  // 32-bytes
这将有助于分析指向同一内存模型的多个实例的大小

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

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