【发布时间】:2011-12-23 16:30:00
【问题描述】:
我观察到操作系统所说的和 jVisualVM 所说的 Tomcat RAM 消耗不匹配。
从 htop 来看,Tomcat JVM 有 993 MB 的常驻内存
来自 jVisualVM,Tomcat JVM 正在使用
- 堆最大值:1,070,399,488 B
- 堆大小:298.438.656 B
- 使用的堆:变量,介于 170MB 和 270MB 之间
- 永久代最大值:268,435,456 B
- 永久代大小:248,872,960 B
- 使用的 PermGen:略有变化,大约 150MB
据我了解,操作系统内存消耗应该是堆大小 + PermGen 大小 ~= 522 MB。但这比我观察到的要少 471 MB。
有人知道我在这里缺少什么吗?
PS:我知道我的最大堆比使用的要高得多,但我假设如果 JVM 不使用它(即堆大小更小)应该没有效果。
谢谢! 马克
【问题讨论】:
-
你的堆数是否包括老代和年轻代?
-
在您的帖子中,您提到了两次“PermGem 大小”:“PermGen 大小:248,872,960 B,PermGen 大小:略有变化,大约 150MB”。可以吗?
-
+1 我也想了解这一点。我确实遇到了 pergem 的一些内存不足错误,因此让我对发生的事情有所了解会有所帮助。
-
@Kevin 我假设它既是老一代又是年轻一代