本文来自:HeapDump性能社区
问题描述
最近经常被问到一个问题,”为什么我们系统进程占用的物理内存(Res/Rss)会远远大于设置的Xmx值”,比如Xmx设置1.7G,但是top看到的Res的值却达到了3.0G,随着进程的运行,Res的值还在递增,直到达到某个值,被OS当做bad process直接被kill掉了。
top - 16:57:47 up 73 days, 4:12, 8 users, load average: 6.78, 9.68, 13.31
Tasks: 130 total, 1 running, 123 sleeping, 6 stopped, 0 zombie
Cpu(s): 89.9%us, 5.6%sy, 0.0%ni, 2.0%id, 0.7%wa, 0.7%hi, 1.2%si,

本文探讨了Java进程物理内存占用大于Xmx设置的现象,解释了Xmx不包括的部分,如堆外内存。分析了DirectByteBuffer可能导致的内存泄漏,并介绍了使用google perftools来检查动态库内存分配。最后,通过实例揭示了由于高并发导致的内存问题及解决方案。
最低0.47元/天 解锁文章
1019

被折叠的 条评论
为什么被折叠?



