Учитывая следующую командную строкуДублированные варианты исполнения Java: какой порядок предпочтений?
java -Xms128m -Xms256m myapp.jar
Какие параметры будут применяться для JVM минимальный объем памяти (Xms
опция): 128M или 256M?
Учитывая следующую командную строкуДублированные варианты исполнения Java: какой порядок предпочтений?
java -Xms128m -Xms256m myapp.jar
Какие параметры будут применяться для JVM минимальный объем памяти (Xms
опция): 128M или 256M?
Зависит от JVM, возможно, версия ... возможно, даже сколько скрепки на вашем столе в то время. Это может даже не сработать. Не делай этого.
Если по какой-то причине это не под вашим контролем, скомпилируйте и запустите это так же, как вы запустите свою банку. Но будьте осторожны, полагаясь на порядок вариантов - это действительно плохая идея.
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());
}
}
+1 - лучше подсчитать эти скрепки :-). Серьезно, это не наука о ракетах, чтобы изменить то, что проходит мимо этих двусмысленных аргументов. –
пытался с разным количеством скрепки. не может найти переход к первому – OganM
Держу пари, что это второй. Аргументы, как правило, обрабатываются в порядке:
for(int i=0; i<argc; i++) {
process_argument(argv[i]);
}
Но если бы я писал Java аргумент парсер, я жаловался на противоречивые аргументы.
IBM JVM рассматривает самый правый экземпляр аргумента в качестве победителя. Я не могу разговаривать с HotSpot и т. Д.
Мы делаем это, так как часто имеются вложенные командные строки из пакетных файлов, где люди могут добавлять только до конца и хотят сделать это победителем.
+1 для ответа на вопрос вместо подтверждения. – JimN
Действительно: https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.zos.70.doc/diag/appendixes/cmdline/cmdline_specifying.html –
Как всегда, проверьте конкретную реализацию локальной JVM, но вот быстрый способ проверить из командной строки без необходимости кода.
> java -version; java -Xmx1G -XX:+PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
uintx MaxHeapSize := 2147483648 {product}
Таким образом, вы будете видеть в этом случае второй экземпляр аргумента (2G) является то, что имеет преимущество (по крайней мере в 1,8), и что был мой опыт работы с большинством других современных версий, а также.
'java -Xmx1G -XX: + PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize', таким образом его легче вывести. – ryenus
Нет опечатки в вопросе. Опция Xms используется дважды специально. В этом суть вопроса – fabien7474