当前位置:  开发笔记 > 编程语言 > 正文

Linux上的Java内存使用情况

如何解决《Linux上的Java内存使用情况》经验,为你挑选了0个好方法。

我正在运行一大堆Java应用程序服务器,它们都在CentOS 5.5 Linux之上运行最新版本的Tomcat 6和Sun的Java 6.每个服务器都运行多个Tomcat实例.

我正在设置-Xmx450m -XX:MaxPermSize = 192m参数来控制堆和permgen的增长量.这些设置适用于所有Java应用程序服务器中的所有Tomcat实例,总共约70个Tomcat实例.

以下是Psi-probe报告的其中一个Tomcat实例的典型内存使用情况

Eden           = 13M
Survivor       = 1.5M 
Perm Gen       = 122M 
Code Cache     = 19M 
Old Gen        = 390M 
Total          = 537M

然而,CentOS报告这个特定进程的RAM使用率为707M(根据RSS),这使得170M的RAM下落不明.

我知道JVM本身和它的一些依赖库必须加载到内存中,所以我决定启动pmap -d来查找它们的内存占用.根据我的计算,约占17M.

接下来是Java线程堆栈,在32位JVM for Linux上每个线程为320k.同样,我使用Psi-probe来计算特定JVM上的线程数,总计为129个线程.所以129 + 320k = 42M

我已经读过NIO使用堆外的内存,但我们不在我们的应用程序中使用NIO.

所以在这里,我已经计算了(我的)头脑中的一切.我只占了"失踪"170M的60M.

我错过了什么?

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有