小编Arn*_*son的帖子

Linux上的Java内存使用情况

我正在运行一大堆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
Run Code Online (Sandbox Code Playgroud)

然而,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.

我错过了什么?

java linux memory

12
推荐指数
1
解决办法
7830
查看次数

标签 统计

java ×1

linux ×1

memory ×1