2011/5/18

[心得] ByteArray.compress 壓縮函數

這篇文章描述了使用 compress 並不會減少實際記憶體使用量

以及解決方法

========================= 問題描述 =========================


我有一個 ByteArray 為了節省記憶體 所以要壓縮
var byteArray:ByteArray = 某個很大的ByteArray;


我先觀察一下資料量
var length1:int = byteArray.length;


之後使用壓縮函數
byteArray.compress();

再次觀察
var length2:int = byteArray.length;


看一下壓縮比
trace((1-length2/length1) * 100 + "%");
印出來是 99.xxx%


但是觀察記憶體使用量卻沒有下降



========================== 解決方法 ====================

複製一份 byteArray
var byteArray2 :ByteArray = new ByteArray();
byteArray2.writeBytes(byteArray);


然後把舊的替換掉
byteArray.clear();
byteArray = byteArray2;


就可以看到記憶體確實下降了

沒有留言: