一尘不染

JVM堆参数

java

在阅读有关该主题的已问问题和大量谷歌搜索之后,我仍然无法清楚了解 -Xms 选项

我的问题是:java -Xms=512m -Xmx=512m和之间有什么区别java -Xms=64m -Xmx=512m

现在,我有以下答案:

唯一的区别是在应用程序运行期间将运行的垃圾回收数量和内存分配数量。我对吗 ?

这是我获得此答案的原因:

-Xms选项设置为512m不会导致我的应用程序512M在启动后真正占用物理内存。我想这与现代OS虚拟内存管理和惰性页面分配有关。(我注意到,在Linux上由top或Windows上的任务管理器报告的初始使用的内存设置-Xms为to
512M或to 64M不会改变)

有人可以帮助我了解此Xms选项的影响,还是可以指向帮助我了解此选项的链接?

提前致谢

马努


阅读 294

收藏
2020-09-08

共1个答案

一尘不染

总结在链接之后找到的信息:JVM分配了-
Xms指定的数量,但是OS通常直到需要它们时才分配实际页面。因此,JVM按照Xms的指定分配虚拟内存,但仅根据需要分配物理内存。

您可以通过使用Sysinternals的Process Explorer而不是Windows上的任务管理器来查看此信息。

因此,使用-Xms64M和-
Xms512M之间确实存在差异。但是我认为最重要的区别是您已经指出的区别:如果您确实需要512MB但仅以64MB开头,则垃圾收集器将更频繁地运行。

2020-09-08