2

開発モードとライブモードでGWTを使用しているときにメモリリークが発生する可能性のある方法を説明してください。

次の質問を参照します

GWTのメモリリークを解決するには?

回答の1つで以下のリンクが見つかりました..

https://developers.google.com/web-toolkit/articles/dom_events_memory_leaks_and_you

それらは主にウィジェットの作成とブラウザのイベントを扱います。RPC の実行中にメモリ リークが発生する可能性のある他のブロック ホールはありますか?

4

1 に答える 1

0

あなたがリストしたリンクは、ブラウザが知られている種類のメモリリークをGWTが回避する方法について話しました.dom要素またはウィジェットを参照しているものは何もありませんが、ブラウザはまだメモリから解放しません. 注意が必要な唯一のケースは、他のウィジェットを保持する独自のウィジェットを作成する場合です。このような状況では、各子で attach および detach メソッドを呼び出すことに注意する必要があります。既知の良好なコンテナーとパネルを使用することで、この問題を完全に回避でき、直接接続メソッドや分離メソッドを呼び出さなくなります。

さらに、メモリ リークは他の種類の開発と同じです。もう使用していないものの参照を保持することには注意が必要です。リンクされた質問の回答のいくつかに同意しません.Javaメモリリークツールは、ブラウザーやJavaScriptではなくJVMおよびJavaオブジェクトについて考えるため、開発モードでこれらのオブジェクトを追跡するのに役立ちません。

代わりに、スタイルを PRETTY に設定してコンパイルし、Chrome の Inspector などのツールを使用してください。これを使用して、メモリを消費しているオブジェクトを調べ、それらに何が保持されているかを知ることができます。戦略は、他のヒープ分析ツール (JProfiler、VisualVM など) と同じです。また、コードを記述するための標準的な規則が適用されます。必要のないオブジェクトを保持している場合は、それを null にするか、保持しているコレクションから削除します。明らかに、まだそれが必要な場合は、それを保持してください-代わりに、より高い何かがそれを手放すべきです.

于 2013-01-27T22:59:43.203 に答える