Рассмотрение следующей командной строки
java -Xms128m -Xms256m myapp.jar
Какие настройки запросят Минимальную память JVM (Xms
опция): 128 м или 256 м?
Зависит от 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());
}
}
Держу пари, это второй. Аргументы обычно обрабатываются в следующем порядке:
for( int i=0; i<argc; i++ ) {
process_argument(argv[i]);
}
Но если бы я писал синтаксический анализатор аргументов Java, я бы пожаловался на конфликтующие аргументы.
JVM IBM рассматривает крайний правый экземпляр аргумента как победитель. Я не могу разговаривать с HotSpot и т. Д.
Мы делаем это, потому что часто есть глубоко вложенные командные строки из командных файлов, где люди могут добавлять только в конец, и хотят сделать это победителем.