5回复
1年前
RES超过最大堆内存2倍, cpu 500%
jvm 参数配置:
22694 /app/service/bin/bootstrap.jar -start -Xms2048m -Xmx4096m -Xmn1536m -Xss256k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m
mat dump文件提示:
3212 阅读
jvm 参数配置:
22694 /app/service/bin/bootstrap.jar -start -Xms2048m -Xmx4096m -Xmn1536m -Xss256k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m
mat dump文件提示:
什么类型的应用?用了很多NIO的库么?是不是堆外内存泄漏导致的?使用参数-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics,或者jcmd进行查看。
-Xms2048m -Xmx4096m -Xmn1536m -Xss256k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m
pmap -X <pid> 可以看到进程的内存分配,基本上你这种就是堆外内存的使用过量了。使用 NMT 可以查看到具体每一部分内存的实际占用数量,基本可以定位到是哪一块的溢出。剩下就是排查执行内存区域的溢出问题了,这后面的步骤我还没有统一整理过,基本也是盲人摸象