我正在尝试查找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();
}
}
}
我很困惑。为什么会出现这种情况?
答案 0 :(得分:7)
在这种情况下,getSize()
不会对对象中的所有引用求和 - 只是指向类的指针引用的大小。它是t
对象指针的大小。
不反映对象内部的引用。
示例:
trace(getSize(t)); // 12-bytes
trace(getSize(t.arr)); // 32-bytes
这将有助于分析指向同一内存模型的众多实例的大小。
其他示例包括Bitmaps
,BitmapData
和ByteArrays
,其中getSize()
不反映对象实例保留的内存。
使用getSize()
适用于primitive types,对代码进行基准测试以确定任务的最有效对象。