L'allocation de la mémoire pour Java Webstart Application
Je suis en utilisant Java webstart application appelée BLAST2GO je suis en cours d'exécution dans des problèmes avec l'allocation de la mémoire. Il doit charger un vaste ensemble de données dans la mémoire, alors j'ai essayé d'allouer 3-6 GO pour cette application. Toutefois, peu importe ce que j'ai mis le max de la taille du segment, il utilise toujours 455MB (comme indiqué par la barre de message: 'l'utilisation de la Mémoire: xxMB de 455MB'). J'ai essayé de le définir à très raisonnables (1024 MO), mais encore que 455MB sont d'allocation.
Des idées?
BTW, je suis sous Ubuntu 10.04 32 bits avec 24 GO de mémoire, 8 procs.
Mise à jour: Voici le JNLP qu'ils fournissent. J'obtiens le même résultat quand j'ai modifier les valeurs de la initial-heap-size
et max-heap-size
attributs.
<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>
Mise à jour: j'ai essayé de changer les href
attribut dans la racine jnlp
tag et j'ai reçu un drôle de message sur le terminal. Je me demande si Java est re-télécharger le JNLP à partir de cette URL à chaque fois et en ignorant mes tentatives pour modifier le JNLP. Est il possible que je peux faire pour éviter cela?
> javaws blast2go3GB.jnlp
Error occurred during initialization of VM
CCoouulldd nnoott crreesaetrev et heen oJuagvha svpiarcteu aflo rm aocbhjiencet.
heap
Dernière mise à Jour: s'avère que c'était un problème avec la Version de Java. J'ai eu le comportement attendu quand j'ai téléchargé et utilisé Java de Sun.
J'ai utiliser le lien qu'ils fournissent et de spécifier combien je veux.
Viens de faire la même: La ligne est
<j2se version="1.5+" initial-heap-size="64m" max-heap-size="2048M"/>
pour 2048 entrées.Sur mon Mac (avec 5 Go de mémoire et la JVM 64 bits) de la ligne est "l'utilisation de la Mémoire: 18MO de 2043MB". Je voudrais essayer sur une machine 64 bits.
Oui, j'ai modifié cette ligne. Ce que j'ai mis pour la première taille de tas et de tas max taille, c'est toujours 455MB.
OriginalL'auteur Daniel Standage | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Si vous exécutez une version 32 bits de Linux, vous ne pouvez exécuter qu'une JVM 32 bits qui est limitée à 4 Go de mémoire par exemple. Je crois que c'est également le cas même si vous avez plus visible pour le noyau.
Si vous avez vraiment, vraiment besoin de beaucoup de mémoire en une seule JVM vous avez besoin pour aller de 64 bits.
EDIT: Java WebStart n'était pas open source pour OpenJDK donc une alternative de mise en œuvre est utilisée. Essayez de télécharger et d'utilisation de Sun Java pour cela à la place. Il suffit de télécharger et décompresser le JDK, et exécuter bin/javaws foo.jnlp.
Vous pouvez faire de mal, et c'est le comportement par défaut. Ou il vous donne juste ce qu'il peut. Dur à dire, à montrer certains JNLP.
Ok, JNLP vient de la page liée. Voir les commentaires à la question.
Le résultat est le même, que j'ai modifier le JNLP ils fournissent ou non. Je vais le poster.
C'était certainement la
javaws
version. Je ne savais pas Ubuntu n'était pas à l'aide de Java de Sun. J'ai téléchargé/installé la dernière version de JDK. Il me donne de la mémoire-je demander quand il est disponible et utile pour les messages d'erreur lorsque j'essaie d'allouer trop de. Merci!OriginalL'auteur Thorbjørn Ravn Andersen
Vous pouvez spécifier la taille de segment de mémoire dans le j2se balise comme ceci:
Et spécifier tous les jre version vous utilisez.
j2se
tag et il avait la version1.5+
. Je suis en cours d'exécution 1.6.0_18 sur mon système, de sorte que devrait être couvert.Avez-vous essayé d'exécuter votre application sans jnlp(à partir de la ligne de commande java-jar myapp.jar -Xms1024m -Xmx3000m) avez-vous le même problème lors de l'exécution en ligne de commande?
OriginalL'auteur Enrique
Essayer de l'activer à l'aide d'un manuel de paramètre de ligne de commande. Quelque chose comme ceci:
<j2se version="1.6+" java-vm-args="-Xms3072m"/>
Ne fonctionne pas (au moins avec java 8 pas)
OriginalL'auteur Nowaker
Avez-vous essayé la solution de la blast2go page de démarrage?
Il n'est pas clair ce qui se passe ici, mais je pense qu'il est probable que blast2go est en train de faire quelque manuel de gestion de la mémoire astuces. (Le fait qu'il prétend rapport de la quantité de mémoire utilisée est indicative.) Si c'est le cas, alors il peut y avoir des arguments spécifiques à l'application ou des propriétés qui doivent être définis si vous tordre le fichier JNLP.
C'est ce que j'ai été en utilisant tout le long. Peu importe ce que j'ai mis pour la quantité de mémoire, je ne reçois 455MB.
OriginalL'auteur Stephen C
Dans la production, si le client veut personnaliser la java de la taille du segment en jnlp basé sur le système de configuration est disponible ( taille de la RAM sur la machine cliente)
Changements dans la APPLICATION_TEMPLATE.JNLP: utilisez * pour accepter les valeurs configurables
Des changements dans l'application.jnlp :
Transmettre les valeurs réelles de intial-tas-taille et max-heap-taille.
fichier jnlp prend en charge les scriptlets et expressions.
max-heap-taille
OriginalL'auteur Suresh Ragala