“FlashPlatform GC”的版本间的差异
来自Blueidea
(以内容“Category:Thinking in ActionScript”创建新页面) |
|||
第1行: | 第1行: | ||
[[Category:Thinking in ActionScript]] | [[Category:Thinking in ActionScript]] | ||
+ | ==引用和對象== | ||
+ | 首先需要達成一個共識。 | ||
+ | 我們在ActionScript3中操作對象所使用的都是引用(指針),而非對象本身。 | ||
+ | 所以當你刪除一個變量,被刪除的是引用。而不是對象本身。 | ||
+ | 要了解如何优化你的ActionScript 3.0代码。就需要對垃圾回收的工作原理有所瞭解。 | ||
+ | ==垃圾回收機制== | ||
+ | ActionScript3的垃圾回收機制使用兩種方式。 | ||
+ | [[Image:FlashPlatform_Numbers1.jpg]]reference count 如果一個對象的引用次數為0,那麼幹死。 | ||
+ | [[Image:FlashPlatform_Numbers2.jpg]]mark and sweep 標記並清除,在DOM種從root向下遍歷並標記。清除沒有被標記的。 | ||
+ | |||
+ | 計數法<br/> | ||
+ | 通常用來描述垃圾回收機制但並為作為唯一的回收手段。 | ||
+ | [[Image:FlashPlatform_GC_count.png]] | ||
+ | === 參考資料 === | ||
+ | [[http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html Flash的垃圾回收]] | ||
+ | [[http://en.wikipedia.org/wiki/Garbage_collection_(computer_science) 垃圾回收機制]] |
2011-04-17T08:10:32的版本
引用和對象
首先需要達成一個共識。
我們在ActionScript3中操作對象所使用的都是引用(指針),而非對象本身。 所以當你刪除一個變量,被刪除的是引用。而不是對象本身。
要了解如何优化你的ActionScript 3.0代码。就需要對垃圾回收的工作原理有所瞭解。
垃圾回收機制
ActionScript3的垃圾回收機制使用兩種方式。
reference count 如果一個對象的引用次數為0,那麼幹死。 mark and sweep 標記並清除,在DOM種從root向下遍歷並標記。清除沒有被標記的。
計數法
通常用來描述垃圾回收機制但並為作為唯一的回收手段。
文件:FlashPlatform GC count.png
參考資料
[Flash的垃圾回收] [垃圾回收機制]