6

OutOfMemoryExceptionこのJVMでが発生しているときにヒープをダンプすることは可能ですが、またはのようなツールを使用してライブダンプを要求することは可能ですjmapjconsole

4

4 に答える 4

6

「システム」ダンプ(基本的にはOSコアファイル)と「ヒープ」(別名ポータブルヒープダンプ(PHD))があることに注意する必要があります。後者は実際のデータが含まれていないため、あまり役に立ちません。これらはデフォルトで有効になっています。

AIXまたはLinuxの場合通常、ヒープダンプをトリガーできるように設定します-Xdump:system(の略-Xdump:system:events=gpf+user) 。kill -3 <pid>

ところで、デフォルトのオプションで使用できますkill -ABRT <pid>。ただし、これによりJVMは終了します。

次のように実行java -Xdump:whatして、デフォルトを確認します。

> /usr/java6/bin/java -Xdump:what -version

Registered dump agents
----------------------
-Xdump:system:
    events=gpf+abort+traceassert,
    label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
    range=1..0,
    priority=999,
    request=serial
----------------------
...
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap3260sr9fp2-20110627_03(SR9 FP2))

システムダンプをオンにした場合:

> /usr/java6/bin/java -Xdump:system -Xdump:what -version

Registered dump agents
----------------------
-Xdump:system:
    events=gpf+user+abort+traceassert,
    label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
    range=1..0,
    priority=999,
    request=serial
----------------------
-Xdump:heap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=/home/u0002824/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd,
    range=1..4,
    priority=500,
    request=exclusive+compact+prepwalk,
    opts=PHD
----------------------
-Xdump:java:
    events=gpf+user+abort+traceassert,
    label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt,
    range=1..0,
    priority=400,
    request=exclusive+preempt
----------------------
-Xdump:java:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt,
    range=1..4,
    priority=400,
    request=exclusive+preempt
----------------------
-Xdump:snap:
    events=gpf+abort+traceassert,
    label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc,
    range=1..0,
    priority=300,
    request=serial
----------------------
-Xdump:snap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc,
    range=1..4,
    priority=300,
    request=serial
----------------------
...

コアjre/bin/jextractで実行することを忘れないでください。* .dmpファイル。

于 2012-10-01T18:40:03.367 に答える
4

いくつかのオプションがあります。

このリストは網羅的ではありません。

于 2010-12-10T09:36:16.283 に答える
3

OK、私はついに自分自身に答えます:アプリケーションにはリモート管理インターフェースがあるので、com.ibm.jvm.Dump.HeapDump()メソッドを呼び出す新しいコマンドを実装します。

于 2010-12-11T21:42:15.357 に答える
0

JProfilerのようなツールが1つあると思います。Eclipseでうまく機能します

于 2010-12-10T07:10:07.387 に答える