4

私は自分のPCでローカルにWebアプリケーションをテストし、VisualVMで監視しています。最近、JMeterも使い始めました。どこかでメモリリークが遅いのではないかと思ったので、負荷テストを行う必要があると提案されたからです。

今日、私のWebアプリはついにOutOfMemory例外を投げました。これが起こった場合に備えて、andparamsを設定しましたHeapDumpOnOutOfMemoryErrorHeapDumpPathヒープダンプファイルが生成されました。

このファイル(java_pid2760.hprof)をVisualVMで開きましたが、正直なところ、このメモリリークの原因を特定する方法がわかりません...

VisualVMを使用してヒープダ​​ンプを分析し、メモリリークを生成しているクラス/インスタンスをどのように見つけますか?

4

2 に答える 2

3

メモリリークをデバッグするときに役立つと思ったリンクを次に示します。

http://olex.openlogic.com/wazi/2009/how-to-fix-memory-leaks-in-java/

http://www.ibm.com/developerworks/rational/library/05/0816_GuptaPalanki/

編集:

http://rejeev.blogspot.com/2009/04/analyzing-memory-leak-in-java.htmlも試してみてください。

于 2011-02-07T18:01:58.073 に答える
1

VisualVMを使用してヒープダ​​ンプとピンポイントメモリリークを分析するのは簡単ではありません。この種の問題に取り組むのが初めての場合は、このツールの使用はお勧めしません。HPjmeterをダウンロードして、HPjmeterに任せることを検討してください。

ダンプファイルを開いた後、[並べ替えられた参照グラフのサブツリー]オプションを選択します。これにより、Webアプリ内のすべてのオブジェクトがサイズで並べ替えられて表示されます。ほとんどのメモリリークシナリオでは、ヒープ内で時間の経過とともに膨らむ1つのタイプのオブジェクトをリークしています。HPjmeterは、このケースをすばやく特定するのに役立ちます。

于 2011-02-07T18:01:21.130 に答える