Java из-за ошибки памяти при выполнении клиента Swing - PullRequest
0 голосов
/ 13 сентября 2010

Мой исполняемый клиент Swing выбрасывает исключение памяти при выполнении с удаленного компьютера. Однако выполнение клиента из командной строки (увеличение пространства кучи) с помощью следующей команды работает.

java -XMx128m -Xms128m -jar myclient.jar

Я не хочу, чтобы удаленные пользователи использовали мой клиент через командную строку, как показано выше. Итак, можно ли установить это пространство кучи при сборке исполняемого файла? Я использую подключаемый модуль Eclipse Fat Jar для создания своего исполняемого файла.

Также, есть ли способ установить значение по умолчанию для пространства кучи Java для клиентских машин (Windows / Mac / Linux)?

Ответы [ 4 ]

2 голосов
/ 13 сентября 2010

Mac OS X : статьи Перенос приложения Java в Mac OS X часть 1 , часть 2 и Часть 3 иллюстрирует, как встроить JAR в комплект приложений Mac OS.Вы можете указать параметры времени выполнения в списке свойств приложения Info.plist, как описано в Справочник по ключам Java Info.plist для Mac OS X .

2 голосов
/ 13 сентября 2010

Я не думаю, что есть стандартный способ указать настройки памяти от в приложении;Java должен запускаться с правильными настройками.Файл jar с манифестом загружается java, которая к тому времени уже запустилась.

Однако вы можете использовать установщик, см. этот вопрос SO , который предлагает NCIS ,Вы также можете перейти по ссылке (в Windows) или к файлу / файлу сценария bat в Windows.Или, может быть, тот тип, который использует Nexus.Я немного погуглил и нашел JSW .

Итак, в общем, ваши варианты выглядят так:

  • инсталлятор, такой как NCIS
  • оболочка типа JSW
  • сценарий оболочки и файл bat
  • файл ссылки или что-то подобное (концептуально похожий на файл script / bat)

Думаю, я бы начал с рассмотрения JSW , поскольку некоторые известные программы, такие как Nexus, похоже, используют его.Я не знаю, хорошо ли он работает с настольными приложениями.Но попробуйте, и вы узнаете :)

2 голосов
/ 13 сентября 2010

вы также можете использовать оболочку типа launch4j , которая сделает исполняемый файл для большинства ОС: es и позволит вам указать параметры виртуальной машины

2 голосов
/ 13 сентября 2010

Хотя я не знаю способа установить значение по умолчанию в отдельной ОС, я могу сказать вам, что командная строка - единственное место для команд -X. В нашем проекте мы обошли это тем, что предоставили им установщик для окон или создали сценарии для конкретной операционной системы. Для установщика мы использовали NSIS, который, казалось, работал очень хорошо.

...