2012-03-08 66 views
0

有誰知道是否可以列出ActionScript3中對象的引用(例如偵聽器,子代等)?AS3列出對象的引用

我想清除內存中的對象準備好垃圾回收,但由於某種原因,它掛在周圍。

謝謝。

+0

[此問題](http://stackoverflow.com/questions/3405808/how-to-remove-all-event-listeners-in-flex)可能對您有所幫助。 – 2012-03-08 08:32:43

+1

我想,如果有一種方法可以做到這一點,那麼爲GC準備對象將是微不足道的,除非您從一開始就關注它,否則這並不重要。 – Marty 2012-03-08 08:38:02

+0

我認爲你最好的辦法是將索引的主要對象,並添加remove()函數,手動設置引用爲空,刪除數組,子對象,兒童,刪除事件監聽器。由於我關心GC,即時通訊使用這個類的索引和刪除偵聽器[https://github.com/turbosqel/as3SupportLib/blob/master/as3SupportLib/src/turbosqel/events/SoftEventDispatcher.as]和每個對象添加刪除和刪除引用和實例的函數。 – turbosqel 2012-03-08 11:16:04

回答

2

如果你有Flash構建器,那麼分析你的應用程序應該會給你幾乎所需的東西。否則,你應該可以使用flash.sampler。* api來製作一個簡單的自定義分析器。

+0

感謝您的回答。我正在使用Flash Pro。您是否有一個特定的採樣器方法,可以列出參考?我查看了API文檔,但看不到任何合適的東西。 – crooksy88 2012-03-08 15:34:28

+0

沒有單個api完成工作。您可以查看http://gskinner.com/blog/archives/2010/04/the_flash_sampl.html以瞭解api的概述。我現在沒有代碼,但是我會試着發佈一個粗略的實現,我找到了我知道漏出來的對象(可能在星期一!!) – catholicon 2012-03-08 20:47:43

0

除了手動檢查每個對象,顯然不是很費錢,沒有辦法。解決方案:當你編碼的時候learn2plan,不要一起打東西。如果你編寫代碼的方式不知道哪些對象正在與哪個對象通話,那麼你就錯了。

+2

同意。不幸的是我正在繼承一個項目。 – crooksy88 2012-03-08 11:12:04

+0

我感到非常傷心,人們會給我這個驅動器。這很簡單,甚至提問的人也同意我的看法。如果你不知道對象是如何與程序中的其他對象綁定的,特別是在停止運行GC的時候,那麼你真的需要重新考慮編程是否適合你。老實說,那是多麼糟糕。但是,請繼續給予驅動器降低成績。我沒有刪除答案,因爲這是事實。 – 2014-06-23 07:22:10