1

私は java.lang.OutOfMemoryError: Java heap space for our service を分析しており、Eclipse MAT ツールを使用してヒープ ダンプを掘り出そうとしています。

当社のサービスは 8G ヒープで実行されており、生成されたヒープ ダンプのサイズはわずか 500 MB です。

JVM コマンドライン フラグは次のとおりです。 -XX:OnOutOfMemoryError=/bin/kill -9 %p -XX:+PrintClassHistogram -XX:-PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:SurvivorRatio=8 - XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC

ヒープ ダンプ サイズ: -rw------- 1 taxadm amazon 557201181 9 月 16 日 15:10 java_pid4026.hprof

これは正しいヒープダンプですか? 私たちのサービスが 7.5 GB の配列を割り当てようとしている可能性は非常に低いためですか?

ご協力いただきありがとうございます

4

2 に答える 2

0

誰かがここで探してしまった場合に備えて:

java.lang.OutOfMemoryError: Java ヒープ領域

私がしたように:使用することXX:+HeapDumpOnOutOfMemoryErrorが重要です。誤って無限ループを作成したコードがあり、jmap -heap アフターエラーを使用しても問題はなく、リークもなく、実際にはヒープ使用量が少ないことが示されました。一方、OOM で自動的に実行される heapdump は大きく、(MAT で) 何が問題なのかを明確に示していました。

于 2018-12-04T10:05:57.010 に答える