Возможно ли иметь разные максимальные размеры кучи для 32-битных и 64-битных JVM с использованием веб-запуска Java?

У меня есть приложение для веб-запуска, которое может работать в 1 ГБ памяти, но оно работает немного быстрее для определенных задач, если у него 4 ГБ памяти. Поэтому я хочу использовать 4 ГБ, когда смогу... то есть на 64-битных JVM.

Можно ли сделать это? Есть ли способ в файле JNLP указать максимальную кучу для 32-битных JVM и 64-битных JVM отдельно?

Обновить

Я попробовал файл JNLP с этими строками:

<resources>
  <j2se version="1.8+" java-vm-args="-XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError"/>
</resources>

<resources os="Windows" arch="x86">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="1024m"/>
</resources>

<resources os="Windows" arch="x86_64">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="4096m"/>
</resources>

Это не работает. Другие строки в блоках ресурсов, специфичных для архитектуры, действительно работали, поэтому я знаю, что блоки ресурсов с атрибутом «arch» правильно идентифицированы и используются. Я удалил эти другие строки в этом посте для краткости.


person Jason    schedule 27.10.2016    source источник


Ответы (1)


Да, вы можете указать разные максимальные размеры кучи в зависимости от архитектуры. Вот пример:

<resources os="Windows" arch="x86">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="1024m"/>
</resources>

<resources os="Windows" arch="x86_64">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="4096m"/>
</resources>

Обратите внимание на разницу между приведенным выше примером и приведенным в вопросе! Первый тег ресурсов в примере вопроса был удален. Это очень важно, так как средство веб-запуска Java распознает только первый тег j2se, который соответствует/установленной JVM. Поскольку в примере вопроса первый тег j2se совпадает, он используется, и используются аргументы, указанные в нем... а не аргументы в последующих тегах j2se.

person Jason    schedule 27.10.2016