爲了防止內存泄漏在ActionScript 3.0中,我使用的成員向量中具有與矢量工作類,例如:在這種情況下如何避免內存泄漏?
public class A
{
private var mHelperPointVector:Vector.<Point> = new Vector.<Point>();
public static GetFirstData():Vector.<Point>
{
mHelperPointVector.length = 0;
....
return mHelperPointVector;
}
public static GetSecondData():Vector.<Point>
{
mHelperPointVector.length = 0;
....
return mHelperPointVector;
}
}
,然後我有消費者誰使用GetFirstData和GetSecondData方法,存儲的引用由這些方法所返回的載體,例如:
public function OnEnterFrame():void
{
var vector:Vector.<Point> = A.GetSecondData();
....
}
這招似乎是良好的,但有時我需要處理的一段時間後通過GetSecondData()返回的向量,並且在這種情況下,該矢量被另一個調用GetSecondData()或GetFirstData()...覆蓋的解決方案就是將矢量複製到一個新的矢量中......但在這種情況下更好地避免這個技巧。你如何處理這些問題?我必須使用大量的矢量(每個長度在1-10之間)。
大小爲10的兩個向量不應該是一個問題。我想象分配/創建新向量並填充值的問題,但希望看到更多的代碼(需要測試的基本工作示例)才能確定。作爲一個想法,當你做GetFirstData時,你的類A可以有一個布爾標誌來檢查它是否應該清除以前的數據。另外,還有一些脫離主題,請看Object Pools。 –