【发布时间】:2011-11-30 13:39:03
【问题描述】:
我发现我们正在使用的旧版软件的启动属性格式错误,因此它接收这两个不相等的 xmx 作为属性:
java -jar myapp.jar -Xmx128m -Xmx512m
我无权访问启动器源代码(无法修改),所以请问,这些参数重复有什么影响?我可以这样离开吗,还是我应该担心?会应用哪一个?
使用的JVM是JRE 6 update 18
【问题讨论】:
我发现我们正在使用的旧版软件的启动属性格式错误,因此它接收这两个不相等的 xmx 作为属性:
java -jar myapp.jar -Xmx128m -Xmx512m
我无权访问启动器源代码(无法修改),所以请问,这些参数重复有什么影响?我可以这样离开吗,还是我应该担心?会应用哪一个?
使用的JVM是JRE 6 update 18
【问题讨论】:
一般来说,如果工具不拒绝重复,通常会使用后一个选项,但除非工具记录它,否则您不能指望它。
最好的办法是通过Runtime 的totalMemory 和maxMemory 看看你的特定JVM 会发生什么:
public class HeapSize {
public static final void main(String[] args) {
Runtime rt = Runtime.getRuntime();
System.out.println("Total currently: " + rt.totalMemory());
System.out.println("Max: " + rt.maxMemory());
System.exit(0);
}
}
在my JVM上(Linux下的Sun/Oracle 1.6.0_26-b03),后一个选项生效:
$ java -Xmx16m HeapSize 当前总数:16121856 最大:16121856 $ java -Xmx32m 堆大小 当前总数:32178176 最大:32178176 $ java -Xmx16m -Xmx32m 堆大小 当前总数:32178176 最大:32178176 $ java -Xmx16m -Xmx32m -Xmx128m 堆大小 当前总数:59113472 最大:119341056
【讨论】:
我的理解是它将使用最后一个设置。
【讨论】: