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

... usr / lib / jvm / jre / bin / java -Xms128m -Xmx128m -XX:PermSize = 128m -XX:MaxPermSize = 128m ...

$ 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 / bin / java -Xms328m -Xmx328m -XX:PermSize = 128m -XX:MaxPermSize = 128m ...

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


可能是什么原因?

最佳答案

这是因为我想象Linux内核如何分配RAM。我的理解可能是有缺陷的,尽管您可以请求大量的RAM,但直到虚拟内存子系统对其进行某些操作(即实际上已将其写入)后,它才可能真正被占用。

因此,您看到的区别是垃圾收集运行的阈值已更改,因此利用率存在细微差异。如果您开始在RAM中存储更大的数据集,则会发现更大的差异。

10-02 02:55