簡體   English   中英

GWT垃圾收集

[英]GWT Garbage Collection

我正在創建一個新的演示者:

new MyPresenter(new MyView());

它注冊了一些事件處理程序並綁定到視圖等。 最終,我可能會“關閉”該視圖,以便瀏覽器不再呈現它。 我沒有在任何地方維護對MyPresenter這個實例的MyPresenter

在關於此主題的Google論壇中,傳統的響應是“將引用設置為null”,然后不要擔心它。 與Javascript不同,我不能只說this = null; 在Java中有明顯的原因。 但是在Javascript中,很容易找出我知道將不再使用的對象引用。

我的問題:我如何判斷這位演示者是否已被垃圾收集,因為我沒有保留對它的引用? 它顯然存在。 我是否應該相信GWT和JS將會解決這個問題? 或者我是否需要維護自己對MyPresenter的引用,以便在完成后可以手動將其置null

有兩種內存泄漏:

  • DOM /瀏覽器級內存泄漏
  • 應用程序內存泄漏。

關閉應用程序后,DOM /瀏覽器級內存泄漏通常會持續存在。 AFAIK僅舊瀏覽器(IE6)受到影響,這就是GWT使用特殊方式附加處理程序的原因。
對於現代瀏覽器而言,這應該是一個非問題,如果您關閉應用程序,至少它們將不是問題。 然而,它們可能成為應用程序內存泄漏。 (有關詳細信息,請參見此處 )。 但總的來說,現代Javascript GC在釋放未使用的內存方面相當不錯。

應用程序內存泄漏可能是長時間運行的應用程序以及動態創建大量視圖/演示者並通過Eventhandler保持引用時的問題。 但這里真的取決於有關各方的范圍。
這篇文章是一個很好的參考,有更多的信息。

最后,為了確保您確實沒有任何應用程序內存泄漏,您應該使用Dev Tools Heap Profiler來檢查較長時間內的內存消耗。
這篇博文有更多的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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