-4

私は、メモリ リークが発生している Java Web Start アプリケーションに取り組んでいます。私は多くのツールを使用して、疑わしいオブジェクトを見つけました。そして、私のアプリケーションは多くのオブジェクトの clone メソッドを使用しました。今問題はそれを修正する方法です....オブジェクトが最後に使用されたときにオブジェクトにnullを入れることは機能しません.....どんな種類の助けも大歓迎です。前もって感謝します

4

2 に答える 2

3

VisualVMを起動すると、どのオブジェクトがぶら下がっているのかを確認できます。メモリ関連の問題をデバッグするための非常に貴重なツールです。

于 2012-11-15T09:12:49.200 に答える
0

消失したはずのオブジェクトへの参照を保持するプロセスが長時間実行されている場合、メモリ リークが発生します。

たとえば、Swing アプリケーションで閉じられたドキュメントがメモリに保持されていることがわかりました。これは、それらを表示しているパネルへの参照をまだ保持しているキーボードとマウスのリスナー (アプリケーションに対してグローバル) があったためです。

前述のように、JVisualVM は、参照のチェーンを通じて、保持されているオブジェクトのルートを見つけるのに役立ちます。ルートを見つけて、そこでリンクを切ります。

クローン メソッドが参照を保持している場合、または元のオブジェクトとオブジェクトを共有している場合は、クローンのコードが不適切であることを意味します (ディープ コピーを実行するはずです)。適切な clone() の記述については、Effective Java book を参照してください (または、コピー コンストラクターなどの代替手段を使用してください)。

于 2012-11-15T09:21:00.250 に答える