2

ヒープ ダンプを生成するときに発生するシステム GC 中に収集されるオブジェクトをキャプチャしたいと考えています。そのシステム GC を無効にする方法はありますか?

4

4 に答える 4

3

「ヒープダンプ」の代わりに「システムダンプ」を生成できます。そのドキュメントは見つかりませんでしたが、試したところ、「システムダンプ」によって「システムGC」がトリガーされないようです。

generateSystemDump「システムダンプ」は、 JMX操作で要求できます。コマンドを使用する場合kill -3は、JVMに環境変数を追加する必要があります。

JAVA_DUMP_OPTS=ONDUMP(SYSDUMP)

jextract「システムダンプ」は、 EclipseMATにロードする前にツールで処理する必要があります。システムダンプもヒープダンプよりもはるかに大きくなります。これは主に、オブジェクトツリーだけでなく、実際のオブジェクトデータも含まれているためです。

于 2013-01-03T11:21:20.367 に答える
2

-XdisableexplicitgcIBM JREでは、JVM 引数として追加することで、明示的な GC を無効にすることができます。ただし、この記事に基づくと、この議論は役に立たないようです。

IBM サポートへの PMR が役立つかもしれません。

于 2013-01-03T08:31:38.433 に答える
1

ホットスポットを考慮すると、ヒープをダンプするときのVMの動作に影響を与えるパラメーターはありません。通常、GCコレクションはヒープをダンプする前にトリガーされます。

少なくとも、フルGCの前後にクラスヒストグラムの印刷を有効にすることができます。これにより、収集されたオブジェクトを確認できます。(XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC

試すこともできますが-XX:+DisableExplicitGC、これは役に立たないと思います。ヒープダンプを収集すると、常にいくつかのオブジェクトが収集されていることに気付きます。

于 2013-01-02T21:40:55.897 に答える
0

この投稿に出くわし、2 つのボブを入れようと思いました。WebSphere Adminconsole からシステム コアを生成できます。[トラブルシューティング] > [Java ダンプとコア] に移動します。ダンプを収集するサーバーを選択します。システム ダンプをクリックして、システム コアを生成します。

また、MAT でヒープ メモリの分析のみを行う必要がある場合は、システム コアを jextract する必要はありません。システム コアには、ヒープダンプよりも多くの有用な診断データもあります。ほとんどの場合、ヒープ メモリをリークしているスレッドのスタックを確認できます。

于 2020-03-26T08:41:38.003 に答える