重复的Java运行时选项:优先级的顺序是什么?

2022-08-31 10:55:44

考虑以下命令行

java -Xms128m -Xms256m myapp.jar

哪些设置将适用于JVM最小内存(选项):128m或256m?Xms


答案 1

与往常一样,检查本地JVM的特定实现,但这是从命令行检查而无需编码的快速方法。

> java -version; java -Xmx1G -XX:+PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
uintx MaxHeapSize         := 2147483648        {product}

所以在这种情况下,你会看到,参数的第二个实例(2G)是优先的(至少在1.8中),这也是我对大多数其他现代版本的经验。


答案 2

IBM JVM 将参数的最右侧实例视为胜出项。我不能和HotSpot说话,等等。

我们这样做是因为批处理文件中通常有深度嵌套的命令行,人们只能在末尾添加,并希望使其成为赢家。


推荐