2014-09-04 3 views
1

Я следовал за this answer, чтобы увеличить объем памяти, выделенный JVM на общесистемной основе. Кажется, он работает так, как рекламируется до получения настройки для процесса Java.Какие опции JVM имеют приоритет?

Однако процесс Java, что я хочу, чтобы увеличить выделение памяти для фактически будучи порождены непрозрачным процессом третьей стороной, которая определяет свои параметры памяти при создании процесса Java (и который не обеспечивает конфигурацию варианты, которые он передает, следовательно, необходимость в общесистемной настройке).

Итак, что происходит, так это то, что настройки передаются процессу Java. Или, по крайней мере, это то, что появляется, когда я использую approach described here для просмотра аргументов JVM. Я получаю что-то вроде:

enter image description here

Есть некоторые старшинства порядка, который определяет, какие настройки используются, когда же параметр несколько раз (и это гарантирует, что тот же параметр будет всегда быть выбран)?

Или есть ли другой способ проверить, какие настройки на самом деле применяются?

ответ

2

, чтобы проверить это можно сделать

-Xms128m 
-Xmx256m 
-Xmx2g 

, а затем

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

, если его первый вариант, который получает взял будет ООМ, в противном случае это будет продолжаться, и он покажет вам полную память как > 256m

+0

Спасибо, это работает. Как и обсуждаемый подход [здесь] (http://stackoverflow.com/questions/2740725/duplicated-java-runtime-options-what-is-the-order-of-preference). Оба указывают, что это ** последнее ** значение имеет приоритет, по крайней мере, при использовании OpenJDK. – aroth

+0

Какой из них работал для вас и какая версия JVM? –

Смежные вопросы