2010-07-19 1 views
4

Мы используем java webstart на стороне клиента для приложения на основе java swing. Недавно мы столкнулись с необычной ошибкой «Невозможно запустить Java-виртуальную машину» при нажатии на ссылку jnlp.Java webstart max-heap-size причины JVM не может быть запущен

Вскоре мы узнаем об этом, потому что параметр max-heap-size в файле jnlp был установлен на 1024 м, тогда как на большинстве ПК клиента имеется только 1 ГБ физической памяти. Установите максимальный размер кучи на 512 м, решив проблему. В настоящее время соответствующая строка в файле JNLP выглядит

<j2se version="1.5+" initial-heap-size="100m" max-heap-size="512m"/> 

Я посмотрел в JNLP спецификации, но не может найти все, что связано с «Java Virtual Machine» вопрос. Теоретически размер макс-кучи не должен иметь значения, как размер начальной кучи. Но наш опыт показал совершенно противоположное.

Клиент среда:

Windows XP SP2 (32-разрядная), Internet Explorer 8,06, память 1G Примечание Макс-кучного размер установлен 1024M может вызвать такую ​​же проблему на машине с барана 2G.

В принципе, я ищу здесь некоторую ссылку/спецификацию/опыт о том, почему это происходит, и если есть какой-либо вопрос по этому вопросу, помимо увеличения физического объема памяти.

Другое дело, что если мы не укажем максимальный размер кучи, будет ли фактический размер физической памяти использоваться как максимальный размер кучи, или будет использоваться система по умолчанию?

Спасибо, JasonW

ответ

3

Вполне вероятно, что эта проблема вызвана тем, что достаточно большая область памяти не может быть выделена для вашей виртуальной машины Java. Куча объектов Java должна быть выделена в смежных виртуальных адресах по причинам реализации.

Я заметил, что на коробке Win XP с 2 Гб оперативной памяти это разрывается примерно на 1,5 ГБ (этот курс зависит от того, какие процессы выполняются на каждом ПК, поэтому YMMV).

Checkout следующие должности для некоторых объяснений:

Java maximum memory on Windows XP

Why is the maximum size of the Java heap fixed?

+0

Очень полезные ссылки. Благодарю. Он все еще контролирует меня, что нет ничего (по крайней мере, я ничего не могу найти) о требованиях к параметру max-heap-size jnlp. –

1

я обнаружил, что и начально-кучного размер и макс-кучного размера не были уважаемой версией Mac из javaws. Я в конечном итоге заменить их чем-то вроде этого:

 <j2se version="1.6+" java-vm-args="-Xmx1024m -Xms256m -Xss8m" /> 

И, наконец, получил это работает на Mac с большим размером кучи

+1

Не работает в Windows с Java 8 – jan