2011-11-30 78 views
4

我發現,我們使用的是有它的發射特性畸形遺留軟件,因此它接收這兩個不平等的XMX作爲一個屬性:JVM命令啓動選項複製

java -jar myapp.jar -Xmx128m -Xmx512m 

我沒有訪問啓動程序的源代碼(不能修改它),所以我問,這些參數的重複有什麼影響?我可以這樣離開嗎,還是應該擔心?哪一個將被應用?

使用的JVM是JRE 6更新18

回答

6

在一般情況下,它通常是如果一個工具,不拒絕重複該被使用的一種選擇,但你不能對數,除非工具文檔它。

最好的辦法就是看你的具體的JVM會發生什麼,通過RuntimetotalMemorymaxMemory

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); 
    } 
} 

JVM(太陽/ Oracle的Linux下的1.6.0_26-B03)後面的選項生效:

$ java -Xmx16m HeapSize 
Total currently: 16121856 
Max:    16121856 
$ java -Xmx32m HeapSize 
Total currently: 32178176 
Max:    32178176 
$ java -Xmx16m -Xmx32m HeapSize 
Total currently: 32178176 
Max:    32178176 
$ java -Xmx16m -Xmx32m -Xmx128m HeapSize 
Total currently: 59113472 
Max:    119341056
1

我理解它會使用最後的設置。