对于一个应用程序,我在测试环境和生产系统上启动它时都使用 JVM 最大堆设置。当我通过 JMX 连接来监控应用程序时,我发现生产应用程序的最大堆大小与测试应用程序不同。我在两者上都使用了 -Xmx2000m,在测试环境中我得到了 1,864,171,520 B,在生产环境中我得到了 2,009,726,976 B。
所以我的问题是 - 这些信息可靠吗? Java 版本和机器是相同的(Mac OS X 10.5)。
-如果这个信息可靠,那么可能是什么原因导致的这种情况,以及如何改变它,以便两个系统在最大堆大小设置方面表现相同。
答案1
JVM 不会自动分配-Xmx内存量,因此非常小的环境差异可能会导致两个虚拟机最终具有不同的进程大小(对于 2 GB,139 MB 可以说是很小的差异,不是吗?)
请参阅此帖子JVM 内存使用情况。