2015-08-21 2 views
0

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

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

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

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

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

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

ответ

0

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

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

+0

Если JNLP не может начать, его маловероятное нормальное начало работы улучшится. BTW: вы проверяли, используется ли 64-битный jvm? – eckes

+0

Забавно, что вы должны сказать, что --- Кажется, я сталкиваюсь с новой проблемой веб-старта каждые 2-3 месяца, хотя мое приложение всегда начинается локально. Нет, я не проверял, была ли клиентская машина/JRE 32-битной или 64-битной. Тем не менее, я мог бы запустить приложение или не начать, просто перейдя с аргументом в '-Xmx', а точка отказа соответствовала доступной памяти, поэтому я вполне уверен, что это причина. –