Приложение Webstart не запускается с -Xmx2G на Java 8u60

У меня есть приложение Java Webstart, которое успешно запускается с -Xmx1G, но не может начать с -Xmx2G, Некоторые из моих пользователей действительно нуждаются в 2G кучи.

Кажется, это проблема только с Java 8u60, потому что у меня есть сообщение о том, что кто-то успешно запускает Java 8u51.

Ошибка выглядит следующим образом: я вижу синий экран-заставку "Java...", а затем через несколько секунд пуф исчезает, прежде чем отображать консоль Java и не выдает никакой информации о трассировке в ожидаемом месте.

Ошибка возникает только на тех клиентах, у которых доступно менее 2 ГБ памяти. Но я немного удивлен, что запрос "максимального" размера кучи может привести к сбою приложения так рано и без какой-либо диагностической информации. В конце концов, мы имеем дело с "максимальным" значением, а не с "начальным" значением. Я читал в нескольких местах, что JVM не должна этого делать.

Но я также вспомнил, что читал, что "начальный", если не указан, основан на максимуме. Итак, наряду с прохождением -Xmx2GЯ пробовал проходить -Xms512M, -Xms256M, а также -Xms128M, Но эта попытка уменьшить начальный размер кучи не помогла. Я не могу получить эту вещь для начала -Xmx2G!

Кто-нибудь может пролить свет на эту ситуацию? Решение? Обходной путь? В краткосрочной перспективе я перейду на -Xmx1G, но, как я сказал в начале, у меня есть некоторые пользователи, которые действительно нуждаются -Xmx2G, Я хотел бы избежать двух отдельных *.jnlp файлы, которые также повлекут за собой наличие двух отдельных *.jar файлы!

1 ответ

Решение

Оказывается, это именно то, что делает Webstart на Java8u60, если клиентскому компьютеру не хватает памяти для удовлетворения -Xmx, Он пытается начать, а затем пуф, он исчезает без каких-либо указаний на то, что пошло не так.

Таким образом, в конечном итоге мне придется создавать свое приложение в разных конфигурациях, если я хочу позволить пользователям с большей памятью выделять эту память для моего приложения. Это связано с тем, что для подписи требуется, чтобы файл *.jnlp был включен в сам файл *.jar, а этот файл *.jnlp должен точно соответствовать файлу *.jnlp, используемому для запуска приложения.

Другие вопросы по тегам