【问题标题】:increase maximum representable size for java heap space over 6GB on MAC增加 MAC 上超过 6GB 的 java 堆空间的最大可表示大小
【发布时间】:2025-12-07 15:20:05
【问题描述】:

我正在使用 Mac 10.6.8 64 位机器(32 GB Ram)上的模型检查器。我的问题是我不能保留超过 2 GB 的堆空间。

我试过这个:

./mymodelchecker -vmargs -d64 -Xms6g -Xmx6g

但我收到此错误消息:

Invalid initial heap size: -Xms6g The specified size exceeds the maximum representable size.

在我看来,堆空间在 32 位环境下工作,但机器是 64 位的,Java 通过 -d64 处于 64 位模式,我的模型检查器支持 64 位架构。

如何增加堆空间的最大可表示大小?

【问题讨论】:

  • java -version 报告什么?我敢打赌它说您使用的是 32 位 JVM。
  • -d32-d64 选项仅适用于 Solaris。在其他平台上,您有一个 32 位或 64 位且不可选择的 JVM。
  • $ java -version java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-10M3720) Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424,混合模式)
  • 你能粘贴运行 jvm shell "mymodelchecker" 吗?

标签: java jvm heap-memory


【解决方案1】:

您需要修改 mymodelchecker 脚本,找到实际实例化 java 程序的行并添加 -Xms6g -Xmx6g 参数。

另外,也许模型检查器有一个配置/属性文件,您可以在其中设置 VM 参数而无需修改启动脚本。

【讨论】:

    【解决方案2】:

    您还可以检查 top -p #processId 以检查声明的堆是否已分配给进程。查看顶部报告中分配的虚拟内存:

    ps -aef | grep <your process identifier>
    top -p <the process id of the process as returned by the previous statement>
    

    【讨论】: