2009-08-12 11 views
0

Utilisation d'une application de la console Java, je peux le faire:Comment obtenir plusieurs vidages hprof dans une application Java WebStart (JNLP)?

java -agentlib:hprof=heap=dump,format=b MyClass 

Alors je peux frapper ctrl \ (ou ctrl-break sous Windows) chaque fois que je voudrais prendre un instantané du tas pour plus tard une analyse.

Je voudrais faire la même chose pour une application Java Web Start, mais je n'arrive pas à faire fonctionner ça. Je peux passer l'argument agentlib avec la variable d'environnement JAVAWS_VM_ARGS, mais entrer ctrl- \ et ctrl-break dans la console ne semble rien faire. Tout ce que j'obtiens est un vidage, quand le programme commence, ce qui n'est pas vraiment intéressant puisque à ce moment-là je ne me suis même pas encore connecté à notre programme et j'ai exécuté les transactions que je veux analyser.

Répondre

0

Vous pouvez utiliser VisualVM pour prendre des vidages de tas à partir de l'application en cours d'exécution. VisualVM vous permet de parcourir et d'enregistrer les vidages de tas.

+0

Cool ... cela est inclus dans Java 1.6.0_7 et plus tard ... – skiphoppy

+0

Malheureusement, il semble que notre Web Java Démarrer les plantages d'application lorsque j'essaie de profiler sa mémoire avec VisualVM. – skiphoppy

1

Lancez votre application avec les arguments de JMV suivants pour permettre JMX et démarrer un auditeur sur le port 9004:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port="9004" 
-Dcom.sun.management.jmxremote.authenticate="false" 
-Dcom.sun.management.jmxremote.ssl="false" 

alors jetez un oeil à ce programme Java qui peut établir une connexion au serveur JMX et prendre décharge de tas sur demande. Le code source inclut des commentaires avec des liens vers 2 articles utiles sur Internet qui m'ont aidé à faire fonctionner tout cela. Bonne chance !

Lien: JmxHeapDumper.java

post-scriptum Il est difficile de commencer à JMX pour une application WebStart, j'ai trouvé cette discussion, j'espère que ça aide: http://forums.java.net/jive/message.jspa?messageID=311717