2014-10-17 51 views
0

我想知道在ActionScript中有多少內存被一個對象引用佔用了?AS3 Reflections memory length/size

如果我有一個對象的實例,並希望按特定順序處理它們,我會創建另一個數組或矢量uint,並在第一個數組中指示它們。

我可以統計分配特定數量的uint s需要多少內存,但不知道創建另一個數組作爲參考集需要多少內存。我想每個引用都需要指定對象的類型,因此它可能會超過32位。

我想數字對象也需要在某些時候有引用,但是如果我創建的矢量是內存中的連續數據,只有這個矢量將包含有關其成員類型以及它將如何影響處理效率?

也許一個簡單的代碼將更好地闡明我的意思。 所以,基本上我的問題是這些方法的更有效的內存使用(和速度也)方面:

var mo, tu, we, th, fr, sa, su:Object; 
var days:Array = [mo, tu, we, th, fr, sa, su]; 
var daysOff:Array = [mo, we, fr]; 

for (var i:int = 0; i < daysOff.length; i++){ 
    trace(daysOff); 
} 

var mo, tu, we, th, fr, sa, su:Object; 
var days:Array = [mo, tu, we, th, fr, sa, su]; 
var daysOff:Array = [0, 2, 4]; 

for (var i:int = 0; i < daysOff.length; i++){ 
    trace(days[daysOff[i]]); 

} 

我可以比較的序列化數據的長度,但我由於諸如私有成員之類的大量數據由於序列化過程而丟失,所以不相信這一點。 AS3中某處對象引用的深入解釋是什麼?

+0

您可以使用Adobe Scout來獲取基線,然後進行調整並查看如何增強參考/數組。 – 2014-10-17 15:59:37

回答

0

通過使用ByteArray.writeObject()來序列化數據,然後計算字節數組的長度,可以計算出對象的數據有多大。

不幸的是,沒有簡單的方法來計算完整大小的完整對象及其所有功能和屬性。 Actionscript缺乏直接與內存區域交互的能力,即使有這樣的能力,Actionscript Object的所有部分本身都是對象引用(包括函數),但您需要遞歸掃描來保持隧道貫穿所有引用,直到找到基礎數據表示。