2014-09-04 71 views
1

我跟着this answer以增加在系統範圍內分配給JVM的內存量。它似乎像廣告一樣工作,只要將設置設置爲Java進程即可。哪些JVM選項優先?

但是,我想增加內存分配的Java進程實際上是由不透明的第三方進程產生的,該進程在創建Java進程時指定其自己的內存選項(並且它不提供它傳遞的選項,因此需要系統範圍的設置)。

所以會發生什麼這兩個設置被傳遞給Java進程。或者至少,當我使用approach described here查看JVM參數時會出現這種情況。我得到的是這樣的:

enter image description here

有一些優先順序是規定了哪些設置指定了相同的選項時,多次使用(這保證了相同的設置將總是選擇)?

或者還有其他一些方法來檢查哪些設置實際上應用?

回答

2

來檢查,你可以做到這一點

​​3210

然後

// allocate 256m 
byte[] array = new byte[ 256 * 1024 * 1024 ]; 
System.out.println(runtime.totalMemory()); 

如果被拾起它會OOM了第一個選項,否則將繼續,並且它會告訴你總內存> 256m

+0

謝謝,這個工程。正如所討論的方法[這裏](http://stackoverflow.com/questions/2740725/duplicated-java-runtime-options-what-is-the-order-of-preference)。兩者都表明它是最後的**值,至少在使用OpenJDK時優先。 – aroth 2014-09-05 00:17:17

+0

哪一個適合你,哪個版本的JVM? – 2014-09-05 00:17:40