遇到一些麻煩對象刪除後,我跑一個簡單的測試:對象()調用
- 創建一個簡單的類與弱引用偵聽Event.ENTER_FRAME。
- 增加了一個
trace("I Exist!")
呼叫到收聽的功能。 - 在文檔類中使用一個引用實例化單個實例。
按預期工作 - SWF文件除了打印「我存在!每一幀到控制檯。 (在調試模式,當然)
我沒有未來沒有工作,如我所料:
我設置被設置爲null
上的鼠標事件對象的唯一參考,但該事件的消息所述對象的監聽者在鼠標事件被觸發並且參考設置爲null
之後仍然出現在控制檯中 - 意味着對象仍然存在!
文檔類中調用System.gc()
立即從印刷的進一步消息停止了事件偵聽器,看似刪除的項目。
據我所知,打電話System.gc()
不鼓勵,但從這個簡單的測試看來,垃圾收集器是一個大的FAIL。
我在嘗試處理這個對象時做了些什麼錯誤,或者我應該每次只想調用System.gc()
來擺脫一個對象..?
編輯:調用System.gc()
與非弱聽者也導致看似從內存中刪除的對象
的System.gc()只適用於Flash Player調試 - 你將不能夠在生產中使用它。 – weltraumpirat