Java 如果Xms5120m,jvm会分配5G RAm吗

Java 如果Xms5120m,jvm会分配5G RAm吗,java,memory,jvm,Java,Memory,Jvm,我们有一个java进程,它有这样的起始参数:-Xms5120m-Xmx5120M jvm会在启动时分配5G RAM吗 与-Xms1024m-Xmx5120M相比,这是一个好的实践吗 [更新] 即使我设置了Xms5120M,它似乎也被忽略了。当进程启动时,任务管理器显示它只使用了大约2G RAM。为什么会这样?java只会分配当时需要的东西。当你告诉它你想要-Xmx5G,这是告诉计算机在最大。而xms是最小的系统内存。如果初始内存堆没有超过5G,而是使用2G,任务管理器只是告诉您2G内存正在使用,

我们有一个java进程,它有这样的起始参数:-Xms5120m-Xmx5120M

jvm会在启动时分配5G RAM吗

与-Xms1024m-Xmx5120M相比,这是一个好的实践吗

[更新]


即使我设置了Xms5120M,它似乎也被忽略了。当进程启动时,任务管理器显示它只使用了大约2G RAM。为什么会这样?

java只会分配当时需要的东西。当你告诉它你想要-Xmx5G,这是告诉计算机在最大。而xms是最小的系统内存。如果初始内存堆没有超过5G,而是使用2G,任务管理器只是告诉您2G内存正在使用,但没有显示您的分配。这表明您的内存堆没有消耗全部5G分配的内存。

如果您确实希望立即初始化初始堆内存,您可能可以尝试-XX:+AlwaysPreTouch JVM选项:

在JVM初始化期间预触摸Java堆。因此,在初始化过程中,堆的每一页都会按需归零,而不是在应用程序执行过程中递增


第二个问题呢?您运行的是32位还是64位Java?