Распределение памяти для Java Webstart Application - PullRequest
5 голосов
/ 01 декабря 2010

Я использую приложение веб-запуска Java под названием BLAST2GO У меня проблемы с распределением памяти. Он должен загрузить большой набор данных в память, поэтому я пытался выделить 3-6 ГБ для этого приложения. Однако независимо от того, что я установил в качестве максимального размера кучи, он всегда использует 455 МБ (как указано в строке сообщения: «Использование памяти: xxMB 455 МБ»). Я пытался установить его на очень разумные уровни (1024 МБ), но все равно только 455 МБ выделяется.

Есть идеи?

Кстати, я использую Ubuntu 10.04 32-bit с 24 ГБ памяти, 8 процедур.

Обновление : Вот JNLP, который они предоставляют. Я получаю тот же результат, когда редактирую значения атрибутов initial-heap-size и max-heap-size.

<jnlp spec="1.0+" codebase="http://bioinfo.cipf.es/blast2go/webstart" href="http://bioinfo.cipf.es/blast2go/webstart/makeJnlp.php?mem=3072">
<information>
<title>Blast2GO 3072M</title>
<vendor>CIPF - UPV - IVIA</vendor>
<homepage href="http://www.blast2go.org"/>
<description>Blast2GO 3072M</description>
<description kind="short">Blast2GO 3072M</description>
<icon href="splash.gif"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" initial-heap-size="64m" max-heap-size="3072M"/>
<jar href="ext/blast2go.jar"/>
<jar href="ext/biojava-1.3.1.jar"/>
<jar href="ext/jfreechart-1.0.10.jar"/>
<jar href="ext/mysql-connector-java-3.0.11-stable-bin.jar"/>
<jar href="ext/zvtm.jar"/>
<jar href="ext/jakarta-regexp-1.4.jar"/>
<jar href="ext/jcommon-1.0.13.jar"/>
<jar href="ext/Simpat1.1.jar"/>
<jar href="ext/iText-2.1.1.jar"/>
<jar href="ext/jdom/activation.jar"/>
<jar href="ext/jdom/ant.jar"/>
<jar href="ext/jdom/jaxen-core.jar"/>
<jar href="ext/jdom/jaxen-jdom.jar"/>
<jar href="ext/jdom/jdom.jar"/>
<jar href="ext/jdom/mail.jar"/>
<jar href="ext/jdom/saxpath.jar"/>
<jar href="ext/jdom/xalan.jar"/>
<jar href="ext/jdom/xerces.jar"/>
<jar href="ext/jdom/xml-apis.jar"/>
<jar href="ext/interpro/commons-cli-1.0.jar"/>
<jar href="ext/interpro/commons-cli.jar"/>
<jar href="ext/interpro/freefluo.jar"/>
<jar href="ext/interpro/servlet.jar"/>
<jar href="ext/interpro/WSInterProScan.jar"/>
<jar href="ext/axis_1_4/axis-ant.jar"/>
<jar href="ext/axis_1_4/axis.jar"/>
<jar href="ext/axis_1_4/commons-discovery-0.2.jar"/>
<jar href="ext/axis_1_4/commons-logging-1.0.4.jar"/>
<jar href="ext/axis_1_4/jaxrpc.jar"/>
<jar href="ext/axis_1_4/keggapi.jar"/>
<jar href="ext/axis_1_4/log4j-1.2.8.jar"/>
<jar href="ext/axis_1_4/saaj.jar"/>
<jar href="ext/axis_1_4/wsdl4j-1.5.1.jar"/>
<jar href="ext/axis2/activation-1.1.jar"/>
<jar href="ext/axis2/annogen-0.1.0.jar"/>
<jar href="ext/axis2/axiom-api-1.2.2.jar"/>
<jar href="ext/axis2/axiom-dom-1.2.2.jar"/>
<jar href="ext/axis2/axiom-impl-1.2.2.jar"/>
<jar href="ext/axis2/axis2-adb-1.1.1.jar"/>
<jar href="ext/axis2/axis2-adb-codegen-1.1.1.jar"/>
<jar href="ext/axis2/axis2-codegen-1.1.1.jar"/>
<jar href="ext/axis2/axis2-java2wsdl-1.1.1.jar"/>
<jar href="ext/axis2/axis2-jaxbri-1.1.1.jar"/>
<jar href="ext/axis2/axis2-jibx-1.1.1.jar"/>
<jar href="ext/axis2/axis2-kernel-1.1.1.jar"/>
<jar href="ext/axis2/axis2-saaj-1.1.1.jar"/>
<jar href="ext/axis2/axis2-soapmonitor-1.1.1.jar"/>
<jar href="ext/axis2/axis2-spring-1.1.1.jar"/>
<jar href="ext/axis2/axis2-tools-1.1.1.jar"/>
<jar href="ext/axis2/axis2-xmlbeans-1.1.1.jar"/>
<jar href="ext/axis2/backport-util-concurrent-2.2.jar"/>
<jar href="ext/axis2/commons-codec-1.3.jar"/>
<jar href="ext/axis2/commons-fileupload-1.1.1.jar"/>
<jar href="ext/axis2/commons-httpclient-3.0.1.jar"/>
<jar href="ext/axis2/commons-io-1.2.jar"/>
<jar href="ext/axis2/commons-logging-1.1.jar"/>
<jar href="ext/axis2/geronimo-spec-jms-1.1-rc4.jar"/>
<jar href="ext/axis2/jakarta-httpcore-4.0-alpha2.jar"/>
<jar href="ext/axis2/jaxb-api-2.0.2.jar"/>
<jar href="ext/axis2/jaxb-impl-2.0.2.jar"/>
<jar href="ext/axis2/jaxb-xjc-2.0.2.jar"/>
<jar href="ext/axis2/jaxen-1.1-beta-10.jar"/>
<jar href="ext/axis2/jibx-bind-1.1.3.jar"/>
<jar href="ext/axis2/jibx-run-1.1.3.jar"/>
<jar href="ext/axis2/mail-1.4.jar"/>
<jar href="ext/axis2/neethi-2.0.jar"/>
<jar href="ext/axis2/servletapi-2.3.jar"/>
<jar href="ext/axis2/stax-api-1.0.1.jar"/>
<jar href="ext/axis2/woden-1.0.0M6.jar"/>
<jar href="ext/axis2/wsdl4j-1.6.2.jar"/>
<jar href="ext/axis2/wstx-asl-3.2.0.jar"/>
<jar href="ext/axis2/xalan-2.7.0.jar"/>
<jar href="ext/axis2/xbean-2.2.0.jar"/>
<jar href="ext/axis2/xercesImpl-2.8.1.jar"/>
<jar href="ext/axis2/xml-apis-1.3.03.jar"/>
<jar href="ext/axis2/XmlSchema-1.2.jar"/>
<jar href="ext/batik/batik-anim.jar"/>
<jar href="ext/batik/batik-awt-util.jar"/>
<jar href="ext/batik/batik-bridge.jar"/>
<jar href="ext/batik/batik-codec.jar"/>
<jar href="ext/batik/batik-css.jar"/>
<jar href="ext/batik/batik-dom.jar"/>
<jar href="ext/batik/batik-extension.jar"/>
<jar href="ext/batik/batik-ext.jar"/>
<jar href="ext/batik/batik-gui-util.jar"/>
<jar href="ext/batik/batik-gvt.jar"/>
<jar href="ext/batik/batik-parser.jar"/>
<jar href="ext/batik/batik-script.jar"/>
<jar href="ext/batik/batik-svg-dom.jar"/>
<jar href="ext/batik/batik-svggen.jar"/>
<jar href="ext/batik/batik-swing.jar"/>
<jar href="ext/batik/batik-transcoder.jar"/>
<jar href="ext/batik/batik-util.jar"/>
<jar href="ext/batik/batik-xml.jar"/>
<jar href="ext/batik/js.jar"/>
<jar href="ext/batik/pdf-transcoder.jar"/>
<jar href="ext/batik/xalan-2.6.0.jar"/>
<jar href="ext/batik/xerces_2_5_0.jar"/>
<jar href="ext/batik/xml-apis-ext.jar"/>
<jar href="ext/batik/xml-apis.jar"/>
</resources>
<application-desc main-class="es.blast2go.prog.MainProg"/>
</jnlp>

Обновление : я попытался изменить атрибут href в корневом теге jnlp, и я получил очень странное сообщение на терминале. Интересно, повторяет ли Java повторную загрузку JNLP с этого URL каждый раз и игнорирует мои попытки редактировать JNLP. Есть ли способ, которым я могу предотвратить это?

> javaws blast2go3GB.jnlp 
Error occurred during initialization of VM
CCoouulldd  nnoott  crreesaetrev et heen oJuagvha  svpiarcteu aflo rm aocbhjiencet. 
heap

Окончательное обновление : Оказывается, это была проблема с версией Java. Я получил ожидаемое поведение при загрузке и использовании Sun Java.

Ответы [ 6 ]

4 голосов
/ 01 декабря 2010

Вы можете указать размер кучи в теге j2se следующим образом:

    <resources>
    .........
            <j2se version="1.6.0+" href="" initial-heap-size="1024m" max-heap-size="3000m" />
            <j2se version="1.5.0_05" href="" initial-heap-size="1024m" max-heap-size="3000m" />
            <j2se version="1.4.2_04" href="" initial-heap-size="1024m" max-heap-size="3000m" />        
    .........
    </resources>

И укажите каждую версию jre, которую вы бы использовали.

3 голосов
/ 01 декабря 2010

Если вы работаете с 32-битной Linux, вы можете запустить только 32-битную JVM, объем которой ограничен 4 ГБ памяти на экземпляр.Я полагаю, что это также имеет место, даже если у вас есть больше видимых для ядра.

Если вам действительно очень нужно много памяти в одной JVM, вам нужно перейти на 64-битную.


РЕДАКТИРОВАТЬ: Java WebStart не был открытым исходным кодом для OpenJDK, поэтому используется альтернативная реализация.Попробуйте вместо этого загрузить и использовать Sun Java.Этого должно быть достаточно, чтобы загрузить и распаковать JDK, и запустить bin / javaws foo.jnlp.

2 голосов
/ 01 декабря 2010

Попробуйте установить его, используя ручной параметр командной строки.Примерно так:

<j2se version="1.6+" java-vm-args="-Xms3072m"/>

0 голосов
/ 05 июня 2019

Вы можете изменить его просто с помощью параметра командной строки, например,

javaws -J-Xmx16384m -J-Xms16384m <jnlp url>
0 голосов
/ 19 апреля 2018

В производстве, если клиент хочет настроить размер кучи Java в jnlp на основе доступной конфигурации системы (размер ОЗУ на клиентском компьютере)

Изменения в APPLICATION_TEMPLATE.JNLP: используйте *, чтобы принятьнастраиваемые значения

Изменения в appliation.jnlp:

Передать фактические значения в размер intial-heap-size и max-heap-size.Файл jnlp поддерживает скриптлеты и выражения.

  • Используя скриптлет <%%>, прочитайте файл свойств для настроенных значений
  • Передайте выражение <% =>, указывающее фактические значения, в начальные.размер кучи и максимальный размер кучи
0 голосов
/ 01 декабря 2010

Вы пробовали решение с начальной страницы blast2go ?

"Blast2GO требуется больше памяти? Используйте URL-адрес JNLP динамической памяти:"

http://bioinfo.cipf.es/blast2go/webstart/makeJnlp.php?mem=<put here the amount of memory you need>

Не совсем понятно, что здесь происходит, но я думаю, что вполне вероятно, что blast2go делает некоторые трюки с ручным управлением памятью.(Тот факт, что он утверждает, что сообщает, сколько памяти используется, свидетельствует об этом.) Если это так, то могут быть специфические для приложения аргументы или свойства, которые необходимо установить, если вы настроите файл JNLP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...