память, выделенная при запуске jar через командную строку, но не при двойном щелчке

У меня есть файл .jar, который представляет собой оболочку для запуска другого файла .jar с некоторыми аргументами для JVM, поскольку, по-видимому, другого способа сделать это нет. Эта оболочка создает аргументы командной строки java -jar <arg1> <arg2> ... MyJarFile.jar на основе архитектуры системы: вызов 64-битной JVM (-d64) или нет и установка размера кучи через -Xmx1280M (макс. в 32-битной системе, насколько я понял) или запрос 4 ГБ если это 64-битная архитектура. Проверка версии Java через java -version показывает мне, что у меня работает 64-битная JVM, и проверка PATH в переменных среды подтверждает это. Теперь все в порядке, если я запускаю оболочку через командную строку. Фактический файл .jar запускается с выделенным объемом памяти 4 ГБ. Если я дважды щелкну оболочку из проводника Windows, фактический файл .jar запустится с минимальным (например, 247 МБ) объемом памяти. Обратите внимание, что я также установил -Xms512MB в аргументах команды, что, очевидно, игнорируется при запуске оболочки из пользовательского интерфейса Windows. Это правда, что на машинах, с которыми я сталкиваюсь, установлены как 32-битные, так и 64-битные версии Java. Проверяя реестр Windows (regedit) в записи локального компьютера/jarFile, я вижу, что он связан с 32-разрядной версией среды выполнения. Если я изменяю его там, он работает, но как только устанавливается обновление Java, параметр реестра возвращается. Есть идеи, почему это происходит? (Я еще не тестировал в системах UNIX, так как приложение в основном используется в Windows). Спасибо.


person Marius    schedule 07.01.2015    source источник
comment
Могу я спросить, почему вы используете файл .jar для передачи аргументов jvm? Более обычным способом было бы предоставить 2 скрипта, скрипт .bat для Windows и скрипт .sh для unix, и сделать это через скрипт.   -  person vikingsteve    schedule 07.01.2015
comment
Я использую оболочку, так как я автоматически экспортирую как оболочку .jar, так и фактический файл .jar, когда я его создаю (контроль версий). Таким образом, чтобы каждый раз не изменять .bat или .sh под рукой. И это не зависит от ОС/архитектуры. Кроме того, у пользователей приложений могут быть ограничения на запуск подобных скриптов.   -  person Marius    schedule 07.01.2015


Ответы (1)


См. пример с 2 ГБ:

java -Xmx2g -jar <your-file>.jar

Надеюсь, поможет

person Stathis Andronikos    schedule 19.05.2017
comment
...В самом деле!? :/ Я не уверен, что вы действительно поняли вопрос. Во всяком случае, с тех пор прошло некоторое время, и я думаю, что я оставил это на усмотрение администраторов, чтобы убедиться, что на машине, которая должна запускать приложение, установлена ​​только одна версия Java. - person Marius; 23.05.2017