Memory JVM初始堆内存分配

Memory JVM初始堆内存分配,memory,jvm,jvm-arguments,Memory,Jvm,Jvm Arguments,我已经将-Xms和-Xmx值指定为相同的值,比如说4GB。现在,当我启动我的spring boot应用程序时,我假设操作系统在启动应用程序之后会分配4GB内存,因为这是使用-Xms参数指定的值。但当我检查应用程序的常驻集和堆内存(使用JMX)时,我可以看到分配的内存仍然小于1GB。那么这是否意味着操作系统不必分配使用-Xms指定的内存呢 提前感谢。您没有说哪个操作系统和哪个JVM供应商/版本,但操作系统通常会懒散地分配页面,即除非需要,否则它们不在RAM(“常驻”)中。如果您的应用程序实际上不需

我已经将-Xms和-Xmx值指定为相同的值,比如说4GB。现在,当我启动我的spring boot应用程序时,我假设操作系统在启动应用程序之后会分配4GB内存,因为这是使用-Xms参数指定的值。但当我检查应用程序的常驻集和堆内存(使用JMX)时,我可以看到分配的内存仍然小于1GB。那么这是否意味着操作系统不必分配使用-Xms指定的内存呢


提前感谢。

您没有说哪个操作系统和哪个JVM供应商/版本,但操作系统通常会懒散地分配页面,即除非需要,否则它们不在RAM(“常驻”)中。如果您的应用程序实际上不需要堆内存,那么它就不会驻留。还有一种“自适应大小策略”,如果占用率太低,堆甚至可能缩小到“-Xms”以下: