如何使Flex/ActionScript 3對象符合垃圾回收的條件?什麼是拇指規則? ...道歉,如果這是回答其他地方。在垃圾收集器如何使Flex/ActionScript 3對象符合垃圾收集條件?
1
A
回答
3
基本上你需要刪除所有對象事件偵聽器,並刪除所有引用使其完全未提供給其餘的應用。
刪除事件偵聽器與*.removeEventListener(event type, function)
相當活躍,並刪除引用使用delete(varName)
。
這樣做大多數情況下都能正常工作,但仍然有些情況下,這還不夠,並且真正利用了garbace集合,您需要將代碼的各個方面的支持實踐結合起來,而不僅僅是當你想要刪除一些東西。
zombiegx在尋找更多信息時發佈了您最重要的兩項資產。
4
0
http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html
這是我發現關於垃圾收集最好的文檔。簡而言之,VM2使用一種稱爲標記清除的技術。它基本上遍歷應用程序的每個對象,如樹,並標記它們。任何不再標記的對象都可以被解除分配。這個過程發生在多個幀上,而不是一次全部發生。
因此,對於有資格進行垃圾收集的東西,一定不能有任何對它的引用,例如它必須從顯示列表中刪除,而不是其他對象持有引用。
需要注意的一件事是參考文獻很少。字典對象例如可以通過傳入布爾值來使用弱引用。這意味着當一個對象被放置在已被設置爲使用弱引用的字典中時,它將不會被視爲引用,因此有資格進行垃圾回收(假設沒有其他引用)
0
Definitly read這個:Grant Skinner - Resource management for as3。這將告訴你所有你需要了解的FlashPlayers垃圾回收器,並向你展示一些技巧。每個使用as3的人都應該閱讀它!
1
大多數一切有了解它包含在上面列出的那些博客文章,但基本的向下突破爲:
- 刪除所有對象引用。這包括刪除事件偵聽器或使用弱引用,如上所述,並確保有問題的對象不在任何集合對象中。
- 將原始對象句柄設置爲「null」以幫助垃圾回收器實現引用爲「no」更長的活動
- 等待。 :)或者使用Grant Skinner技巧(上面鏈接)嘗試強制垃圾收集。
相關問題
- 1. 何時對象符合垃圾收集條件?
- 2. 對象符合垃圾收集
- 3. 當一個對象符合垃圾收集器的條件嗎?
- 4. 閉合對象上的垃圾收集
- 5. 垃圾收集對象
- 6. 垃圾收集:將對象收集
- 7. 以下哪些對象符合垃圾回收的條件?
- 8. 如何跟蹤垃圾收集對象
- 9. 有多少個對象符合垃圾回收器的條件?
- 10. 垃圾收集器如何確定對象是否是垃圾?
- 11. 如何使列表中的對象符合垃圾回收的條件?
- 12. 此Java代碼中有多少對象符合垃圾收集條件?
- 13. Scala對象何時收集垃圾?
- 14. JavaScript Blob對象何時收集垃圾?
- 15. 垃圾回收如何處理集合對象?
- 16. 垃圾收集如何收集自我引用對象?
- 17. 對象準備垃圾收集,Java
- 18. R中的垃圾收集com對象
- 19. 對象沒有垃圾收集
- 20. Android的垃圾收集對象
- 21. 辛格爾頓在Java中對象的集合,垃圾收集
- 22. 垃圾收集資格對象
- 23. 垃圾收集:對象屬性
- 24. ActiveX對象和.NET垃圾收集器
- 25. C#垃圾收集對象引用
- 26. 垃圾收集設置對象爲null
- 27. java垃圾收集和臨時對象
- 28. 垃圾收集
- 29. Java垃圾收集和大對象
- 30. 垃圾收集如何在Java中使用Session對象?
不要使用那個黑客來強制垃圾收集 - 在Grants的建議:) – Allan 2009-11-14 11:06:25
是的 - 我在幾年前在360 Flex的演示文稿中介紹了這個黑客,而Adobe Flex團隊成員並不熱情。 – 2009-11-16 22:47:17