我做的一類,主要包含這樣的主要方法: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的大小? –