2013-03-23 109 views
0

当我在tomcat上增加-Xms值时,内存使用率(来自free -m命令)不会相应地改变。下面的示例显示,将其值增加200MB仅影响内存使用量〜85MBXms选项对内存使用量的影响

... usr/lib中/ JVM/JRE /斌/爪哇 - Xms128m -Xmx128m -XX:PermSize =128米-XX:MaxPermSize参数=128米...

$ free -m 
      total  used  free  shared buffers  cached 
Mem:   594  341  253   0   7  104 
-/+ buffers/cache:  229  365 
Swap:   0   0   0 

.../usr/lib目录/ JVM/JRE /斌/ java的-Xms328m -Xmx328m -XX:PermSize =128米-XX:MaxPermSize参数=128米...

$ free -m 
      total  used  free  shared buffers  cached 
Mem:   594  426  167   0   7  104 
-/+ buffers/cache:  314  279 
Swap:   0   0 

可能是什么原因?

+0

一个人不会简单地告诉JVM使用多少内存,只能建议。 – 2013-03-24 11:39:13

+0

另外,为什么你不测量实际的java进程消耗多少内存? – 2013-03-24 11:41:33

回答

1

这是因为我认为Linux内核如何分配RAM。这是我可能有缺陷的理解,尽管你可以请求大量的RAM,但是直到虚拟内存子系统对它做了某些事情(即它实际上已经被写入)之前,它可能不会被使用。

因此,您看到的差异是垃圾收集运行的阈值发生了变化,所以利用率略有不同。如果您开始在RAM中存储更大的数据集,您会注意到更大的差异。

+0

(+1)听起来正确。经常使用的一些术语是“保留”与“承诺”的内存。另请参阅此SO链接了解更多详情:http://stackoverflow.com/questions/1098488/jvm-heap-parameters – SeKa 2013-03-24 04:51:04

相关问题