Дублирование опций запуска команды JVM - PullRequest
4 голосов
/ 30 ноября 2011

Я обнаружил, что используемое нами устаревшее программное обеспечение имеет некорректные свойства запуска, поэтому оно получает два неравных xmx в качестве свойств:

java -jar myapp.jar -Xmx128m -Xmx512m 

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

Используемая JVM - это обновление JRE 6 18

Ответы [ 2 ]

6 голосов
/ 30 ноября 2011

Как правило, обычно используется последний вариант, если инструмент не отклоняет дубликат, но вы не можете рассчитывать на это, если инструмент не задокументирует его.

Лучше всего посмотреть, что происходит с вашей конкретной JVM, с помощью Runtime totalMemory и maxMemory:

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

На my JVM (Sun / Oracle 1.6.0_26-b03 под Linux) вступает в силу последняя опция:

$ 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 голос
/ 30 ноября 2011

Насколько я понимаю, он будет использовать последнюю настройку.

...