求助>RES超过最大堆内存2倍, cpu 500%>
5回复
7月前

RES超过最大堆内存2倍, cpu 500%



jvm 参数配置:

22694 /app/service/bin/bootstrap.jar -start -Xms2048m -Xmx4096m -Xmn1536m -Xss256k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m

11.png

mat dump文件提示:
00.png

959 阅读
请先登录,再评论

回复列表

nickChen6月前

pmap -X <pid> 可以看到进程的内存分配,基本上你这种就是堆外内存的使用过量了。使用 NMT 可以查看到具体每一部分内存的实际占用数量,基本可以定位到是哪一块的溢出。剩下就是排查执行内存区域的溢出问题了,这后面的步骤我还没有统一整理过,基本也是盲人摸象

回复 nickChen:

有空整理下

回复

什么类型的应用?用了很多NIO的库么?是不是堆外内存泄漏导致的?使用参数-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics,或者jcmd进行查看。

童雯6月前
回复 WilliamLeeL:

1、后端服务类,大部分任务是与第三方应用通信的应用
2、netty里使用了NIO库。
3、很大可能是,使用gperftools没发现异常
4、我有开启-XX:NativeMemoryTracking这个参数,打印出来的内存之和也不会超过5g

回复
童雯7月前

-Xms2048m -Xmx4096m -Xmn1536m -Xss256k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m