1

JVM 7 で実行されている JBoss 4.2.1 アプリケーションが、スロー時にヒープ ダンプをトリガーしましたOutOfMemoryExceptions。次のスイッチで構成された jvm があります。

-Xms1498m -Xmx3000m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError

OOME の原因を正確に把握するために、ヒープ ダンプを読み込もうとしています。大量のメモリ ブロックが消費されているように見えますが、これはある程度想定されたものです。私が今探しているのは「スモーキングガン」です。

ヒープ ダンプのメモリ不足に関する別のSO 問題をここで既に開いているので、OOME が発生したときに JVM が何をしていたかを把握しようとしています。

どのスレッドが OOME をトリガーしたかを示すヒープ ダンプはありますか? より具体的には、私の OOME をトリガーした呼び出しは何をしていたのでしょうか? メモリ リークの場合、これが間違ったトレイルを追跡している可能性があることを理解していますが、どのスレッドが例外を引き起こしているかを確認したいと考えています。

これを見るためにMATを使用する方法はありますか?

4

2 に答える 2

1

OOMEヒープがすでにほぼいっぱいで、このスレッドが小さなObjectものでも作成する場合、リークOOMEなしで単純なタスクを実行するスレッドについて考えてみてください。メモリリークの根本原因です。

Threadあなたの実際の質問に関しては、ヒープ ダンプからの原因を知ることができるとは思いませんOOME。唯一の方法は、コンソールまたはログ ファイルを確認することです。これは、JVM がスタック トレースを の標準出力に出力するためOOMEです。

于 2016-06-07T14:36:36.960 に答える