簡體   English   中英

關於AS3中內存管理的快速問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM