2009-07-11 3 views
3

У меня есть игра, реализованная на Java, у которой возникла проблема при запуске слишком большого количества кода из скриптов: в зависимости от языка сценария в игре могут быть эти «икоты», где игра время от времени зависает для нескольких кадров, что делает игру «вялой» время от времени.Есть ли способ включить параметр VM внутри .jar?

После некоторых исследований я обнаружил, что это произошло, когда сборщик мусора решил бежать. После нескольких исследований и тестирования я обнаружил, что использование инкрементного сборщика мусора (с использованием параметра VM-VM) устраняет проблему. Да, я знаю, что GC работает примерно на 10% медленнее, но это стоимость, которую я плачу.

С этой исходной информацией теперь то, что я хочу сделать, это пакет игры в .jar, как я делал до сих пор, но я не знаю, как заставить приложение использовать инкрементный GC без использования -Xincgc, и Я не хотел создавать файлы .bat/.sh, где перед тем, как пользователю нужно было просто дважды щелкнуть значок .jar.

Есть ли способ сделать запуск .jar с инкрементным GC, не требуя какого-либо загрузчика (.bat/.sh) или обертки вокруг него? Есть ли способ включить этот параметр в .jar?

ответ

5

Нет, нет способа сделать это. Аргументы VM могут быть предоставлены только в качестве параметров командной строки для вызова JVM: Java Tool

0

Я не знаю слишком много java-приложений за пределами внутреннего coorporate или dev, которые люди запускают, щелкая банку. Это может указывать на ярлык. Существуют варианты Fancier, которые позволяют создавать exe, запускаться как сервис или даже обертывать все это в установщик ... если мы говорим о Windows, аналогичные вещи существуют для Linux.

3

Вы можете определенно сделать это с помощью JNLP, который может быть настроен для добавления ярлыка на рабочий стол и автоматического обновления банкоматов, среди прочего.

0

Помимо Java Web Start, вы можете рассмотреть возможность упаковки с помощью JSMooth. Он дает EXE, который, в свою очередь, вызывает JVM - вы можете предоставить там аргументы.

1

Из всего лишь файла jar вы не можете этого сделать. Добавление Java WebStart позволяет добавлять java-команды VM. Если вы не против упаковки банку в исполняемом файле Launch4J, он также будет обернуть банку в исполняемый файл. Он делает только окна exe, но он может сделать это на linux или windows. Я не нашел хорошей альтернативы для Linux.

0

Один из вариантов - я всегда задавался вопросом - перезапустить программу jar с вызовом Runtime.exec(), когда параметры неадекватны? Никогда не пробовал, но кажется возможным.

 Смежные вопросы

  • Нет связанных вопросов^_^