我做的一类,主要包含这样的主要方法:Java的-Xms和-Xmx测试
public class Main {
public static void main(String[] _args) {
System.out.println("free:" + Runtime.getRuntime().freeMemory()
+ ". max:" + Runtime.getRuntime().maxMemory());
}
}
然后我运行-Xms2m和-Xmx2m类。输出是这样的:
free:2984840. max:7471104
然后,我的问题是,如果一兆是1048576bytes,则显示的可用内存并不2megabytes如-Xms设置。当我将-Xms选项增加到3m时,它显示了一个免费的兆字节添加。任何人都可以解释发生了什么,。?
使用-Xmx选项会发生不同的情况,当我将它增加到3米,4米和5米时,最大值将继续显示7471104.这约为71.44米。我真的不明白这两个选项如何工作。
这个当我设置-Xms3m和-Xmx6m
free:4033416. max:7471104
任何人都可以帮助是什么,是印刷,。?
谢谢:)
笔记:我与Win7的X64和Java 1.6更新35
认为这种行为是因为你分配了一个太小的堆。此外,最好使用http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html和visual gc插件进行监控。因为Runtemie方法的行为应该依赖于JVM的实现。 – Taky
我同意@Taky,我为我的应用程序设置了更大的值:-Xms100M -Xmx1500M和打印结果是这样的:免费:99129720。最大:1520435200 –
你可以尝试像8,16,256,512的大小? –