我一直在分析 java.lang.OutOfMemoryError: Java heap space for our service 并尝试通过 Eclipse MAT 工具挖掘堆转储。
我们的服务使用 8G 堆运行,生成的堆转储大小仅为 500 MB。
以下是 JVM 命令行标志: -XX:-DoEscapeAnalysis -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/tmp -XX:InitialHeapSize=8589934592 -XX:MaxGCPauseMillis=10 -XX:MaxHeapSize=8589934592 -XX:NewSize=4294967296 -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 Sep 16 15:10 java_pid4026.hprof
这是正确的堆转储吗?因为我们的服务极不可能尝试分配 7.5 GB 数组?
谢谢你的帮助