1

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

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

4

1 回答 1

0

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

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

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

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

于 2013-07-07T02:44:52.910 回答