我们有一个具有以下开始参数的java进程:-Xms5120m -Xmx5120M
jvm会在启动时分配5G RAM吗?
与-Xms1024m -Xmx5120M相比,这是一个好习惯吗?
[更新]
即使我设置了Xms5120M,它似乎也被忽略了。当该过程开始时,任务管理器显示它仅使用了约2G RAM。这是为什么?
最佳答案
Java只会分配当时所需的内容。当您告诉它时,您想要-Xmx5G告诉计算机的最大值。而xms是最小的系统内存。如果初始内存堆的容量不超过5G,而是使用2G,则任务管理器只是告诉您2G内存正在使用,但不会显示您的分配。这表明您的内存堆没有消耗全部5G分配的内存。