use*_*520 2 memory flash memory-management actionscript-3
我正在尝试查找AS3中有多少不同的数据结构消耗内存.
我发现创建一个简单的数组对象消耗76个字节:
var arr:Array = new Array();
trace(getSize(arr));
Run Code Online (Sandbox Code Playgroud)
然而,创建一个包含数组的简单类显示了20个字节:
var t:Testing2 = new Testing2();
trace(getSize(t));
Run Code Online (Sandbox Code Playgroud)
这是这个类的样子:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我很困惑.为什么会这样?
在这种情况下,getSize()不会对对象中的所有引用求和 - 只有指向类的指针的大小.它是t对象指针的大小.
您的对象内的引用不会反映出来.
例:
trace(getSize(t)); // 12-bytes
trace(getSize(t.arr)); // 32-bytes
Run Code Online (Sandbox Code Playgroud)
这将有助于分析指向相同内存模型的众多实例的大小.
其它实例将包括Bitmaps,BitmapData,和ByteArrays,其getSize()不反映对象实例保留在存储器中.
使用getSize()适用于原始类型,基准测试代码可确定任务的最有效对象.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |