2014-09-04 70 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