排除未传播到应用程序的JVM堆大小设置

时间:2013-07-05 10:23:56

标签: java web jvm

假设您有一个Windows客户端,您通过javacpl.exe将JVM配置为具有更大的最大堆大小,例如-Xmx1024m。如果您正在运行的应用程序(在Web浏览器中)仍在抱怨内存大小不高于value Y,那么硬编码到要检查的应用程序中的值,我们假设我们知道此检查是功能和正确,可以采取哪些步骤来了解为什么有问题的应用程序没有“获得”这个修改后的堆大小设置?

编辑一个可能的原因是,如果将32位JRE设置为超过2 Gb(左右)的内存,因为它无法处理它。 1024应该传播,我解决这个问题的方法就是禁用我在系统上找到的不同JRE,直到找到正在使用的JRE。

1 个答案:

答案 0 :(得分:0)

您需要验证在启动期间将哪些 JVM参数传递到VM。

  • 最简单的方法是运行jconsole ,它将附加到正在运行的VM,您可以在其中查看所有启动参数,当前堆大小等.jconsole随你的VM发行版一起提供,您可以在已经安装的JVM_HOME / bin /目录中找到它。

  • 另一种选择是启用JVM日志记录 -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log,jvm.log将再次显示所有启动脚本。

另外,尝试将-Xmx-Xms设置为相同的值,这样初始堆大小将是您想要的大小。