2010-11-30 12 views
5

Estoy usando una aplicación webstart de Java llamada BLAST2GO Tengo problemas con la asignación de memoria. Necesita cargar un gran conjunto de datos en la memoria, así que he intentado asignar de 3 a 6 GB a esta aplicación. Sin embargo, no importa lo que establezca como el tamaño máximo de almacenamiento dinámico, siempre usa 455MB (como lo indica la barra de mensajes: 'Uso de memoria: xxMB de 455MB'). Intenté configurarlo a niveles muy razonables (1024 MB), pero aún así solo se asignan 455 MB.Asignación de memoria para Java Webstart Application

¿Alguna idea?

BTW, estoy usando Ubuntu 10.04 de 32 bits con memoria de 24GB, 8 procs.

Actualización: Aquí está el JNLP que proporcionan. Obtengo el mismo resultado cuando edito los valores de los atributos initial-heap-size y 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> 

actualización: He intentado cambiar el atributo href en la etiqueta raíz jnlp y me dieron un mensaje muy extraño en el terminal. Me pregunto si Java volverá a descargar el JNLP de esta URL cada vez e ignorará mis intentos de editar el JNLP. ¿Hay alguna manera de prevenir esto?

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

Informe final de actualización: Resulta que este era un problema con la versión Java. Obtuve el comportamiento esperado cuando descargué y usé Sun Java.

+0

¿Cómo se indica la cantidad de memoria que desea? –

+0

Utilizo el enlace que proporcionan y especifico cuánto quiero. –

+0

Simplemente hizo lo mismo: la línea es '' para 2048 ingresado. –

Respuesta

3

Si está ejecutando un Linux de 32 bits, solo puede ejecutar una JVM de 32 bits que está limitada a aproximadamente 4 Gb de memoria por instancia. Creo que este es también el caso, incluso si tiene más visible para el kernel.

Si realmente necesita mucha memoria en una sola JVM, necesita ir a 64 bits.


EDITAR: Java WebStart no fue de origen abierto para OpenJDK por lo que se utiliza una implementación alternativa. Intente descargar y usar Sun Java para esto. Debería ser suficiente descargar y descomprimir el JDK, y ejecutar bin/javaws foo.jnlp.

+0

Eso es genial, pero ¿por qué solo se asignan 455MB cuando solicito, digamos, 1024MB? –

+0

Puede hacerlo mal, y es el comportamiento predeterminado. O simplemente te da lo que puede. Difícil de decir: mostrar algunos JNLP. –

+0

Ok, JNLP viene de la página vinculada. Ver los comentarios a la pregunta. –

4

Puede especificar el tamaño de la pila en la etiqueta j2se así:

<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> 

y especificar todas las versiones de JRE que usaría.

+0

Que yo sepa, solo tengo una jre en el sistema. El archivo .jnlp que crearon tenía solo una etiqueta 'j2se' y tenía la versión' 1.5 + '. Estoy ejecutando 1.6.0_18 en mi sistema, por lo que debería estar cubierto. –

+0

@Daniel ¿Ha intentado ejecutar su aplicación sin jnlp (desde la línea de comandos java -jar myapp.jar -Xms1024m -Xmx3000m) ¿Tiene el mismo problema al ejecutar desde la línea de comandos? – Enrique

0

¿Has probado la solución del blast2go start page?

"Blast2GO necesita más memoria Utilice la URL JNLP memoria dinámica:?"

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

No está claro lo que está pasando aquí, pero creo que es probable que Blast2GO es haciendo algunos trucos de administración de memoria manual. (El hecho de que afirma informar cuánta memoria se usa es indicativo de esto). Si ese es el caso, puede haber argumentos o propiedades específicos de la aplicación que deban establecerse si modifica el archivo JNLP.

+0

Simplemente colocan el número en la ubicación correcta del JNLP. Nada sofisticado. –

+0

Eso es lo que he estado usando todo el tiempo. No importa lo que puse por la cantidad de memoria, solo recibo 455MB. –

2

Intente configurarlo utilizando un parámetro de línea de comando manual.Algo como esto:

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

+0

Di una oportunidad, pero desafortunadamente no funcionó. –

+0

No funciona (al menos con java 8 no) – jan