Дублированные опции Среды выполнения Java: каков порядок предпочтения?

Рассмотрение следующей командной строки

java -Xms128m -Xms256m myapp.jar

Какие настройки запросят Минимальную память JVM (Xms опция): 128 м или 256 м?

72
задан fabien7474 29 April 2010 в 20:56
поделиться

3 ответа

Зависит от JVM, возможно, от версии ... возможно, даже от того, сколько скрепок у вас сейчас на столе. Это может даже не сработать. Не делай этого.

Если по какой-то причине это выходит из-под вашего контроля, скомпилируйте и запустите это так же, как вы запускали бы свой jar. Но будьте осторожны, полагаться на порядок опций - действительно плохая идея.

public class TotalMemory
{
    public static void main(String[] args)
    {
         System.out.println("Total Memory: "+Runtime.getRuntime().totalMemory());
         System.out.println("Free Memory: "+Runtime.getRuntime().freeMemory());
    }
}
28
ответ дан 24 November 2019 в 12:35
поделиться

Держу пари, это второй. Аргументы обычно обрабатываются в следующем порядке:

for( int i=0; i<argc; i++ ) {
  process_argument(argv[i]);
}

Но если бы я писал синтаксический анализатор аргументов Java, я бы пожаловался на конфликтующие аргументы.

9
ответ дан 24 November 2019 в 12:35
поделиться

JVM IBM рассматривает крайний правый экземпляр аргумента как победитель. Я не могу разговаривать с HotSpot и т. Д.

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

37
ответ дан 24 November 2019 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: