我今天遇到了一个关于 JVM 初始化的奇怪问题。
我在两台不同的电脑上运行相同的 jar 打开命令,两台电脑都有相同的 java 版本,都是 32 位。
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)
一台PC具有以下配置
Windoex XP Service Pack 2 Amd Athelon 处理器 7750 双核 2 GB DDR2 RAM
如果我在 XP 机器上运行以下命令
java -Xms1200m -Xmx1500m -XX:MinHeapFreeRatio=40 -XX:MaxHeapFreeRatio=70 -jar my.jar
尽管这台机器只有 2GB 的物理 RAM,但 VM 可以成功打开我的程序而没有错误。
现在另一台 PC 的配置遵循 Windows Vista Home Edition Intel P4 core 2 Duo 4 GB of DDR2 Ram,当我点击我的计算机属性时,它显示了 4 GB RAM。
当我在这台机器上运行上面的命令时,它给了我一条错误消息
“初始化过程中发生错误”
如果我尝试使用 -Xmx > 1200 运行任何命令,那么它会给我错误。
我不明白为什么后面的机器会出现 VM 初始化错误,尽管它有双倍 RAM,然后是第一个?