据我所知,-Xms和-Xmx用于指定java程序的最小和最大heap size。根据我的理解,如果我们不指定任何选项,即堆大小可以由JVM自己管理,JVM就可以工作。
所以,如果我们想限制最大堆大小,我们应该使用-Xmx --这是可以的,现在我的问题是,为什么有人需要限制堆的最小大小,因为它可以由JVM很好地管理。
为什么需要-Xms呢?
发布于 2013-11-12 08:51:32
可以通过设置更大的最小堆大小来减少垃圾收集周期。这对长时间运行的程序并没有太大的影响,但是短时间运行的程序可以从中受益。
JVM将初始堆大小设置为最大堆大小的一定数量,然后增长堆,并在所使用的内存超过某个阈值时执行(大部分是次要的) GC运行。因此,当使用-Xms设置初始堆大小(然后在JVM启动时立即分配)时,可以避免这些堆增长周期。
发布于 2013-11-12 08:50:08
JVM内存根据需要在-Xms和-Xmx参数的范围内增长。-Xms和-Xmx之间的区别是,除了最小和最大堆大小范围之外,如果可用的话,-Xms的内存量将由操作系统立即分配给您的应用程序,但是-Xmx将被视为已接受的请求,并将在需要时根据该限制得到服务。
在正常情况下,每个应用程序都需要一些最小的内存来启动和工作。如果应用程序开发人员能够评估这一点,那么指定-Xms是有意义的。预先拥有足够的所需内存可以减少将堆从一个值增长到另一个值的开销。
https://stackoverflow.com/questions/19924583
复制相似问题