[英]quick question about memory management in AS3
將多次調用以下方法。 我擔心連續調用新的矩形會增加可能不必要的內存消耗,或者是用於產生前一個矩形的內存釋放/覆蓋以容納另一個矩形,因為它被分配給同一個實例變量?
private function onDrag(evt:MouseEvent):void
{
this.startDrag(false, dragBounds());
}
private function dragBounds():Rectangle
{
var stagebounds = new Rectangle(0 - swatchRect.x, 0 - swatchRect.y, stage.stageWidth - swatchRect.width, stage.stageHeight - swatchRect.height);
return stagebounds;
}
這是一個快速的問題,但非常重要! 很少有ActionScript開發人員關注甚至考慮這些事情。 所以對你贊不絕口!
每次創建新矩形時,都會為其分配新內存。 一旦刪除了對該矩形的所有引用,它就有資格進行垃圾收集(GC),這意味着下次GC運行時它將從內存中釋放出來。 (在這種情況下,調用stopDrag()
時會刪除所有引用)
Rectangle
一個實例占用很少的內存,並且垃圾收集器定期運行,實例將不斷被清理。 此外,我們可以確定,在沒有先前的實例可用於GC的情況下,將在任何給定時間創建不超過一個。 (假設您再次調用stopDrag
之前將調用dragBounds
。)
真的,這是一個你不需要擔心的情況。 你的代碼很好。 在遇到任何潛在問題之前,您需要數千個矩形(一次數百萬個)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.