27 votes

vidage de la pile java sous Windows

J'ai un processus java en cours d'exécution dans une fenêtre de commande Windows standard. J'ai lancé 'cmd' et tapé java -jar ...

Je dois pouvoir obtenir un vidage complet de la pile de tous les threads, si possible.

Je me souviens que sous linux, vous pouvez envoyer un message à la JVM via une option de la commande quit.

sur ce document état du soleil

Pour générer une trace de la pile sous Windows 95 ou Windows NT, saisissez la commande dans le champ fenêtre dans laquelle le programme Java est s'exécute, ou cliquez sur le bouton Fermer de la fenêtre.

c'est clairement faux, car la fermeture du terminal ne fait rien d'autre que de tuer le processus et de fermer la fenêtre.

39voto

Pascal Thivent Points 295221

Vous pouvez utiliser jstack [ option ] pid (si la question porte sur le vidage de fil). Utilisez jps pour trouver l'identifiant de votre processus Java.

21voto

Seth Points 18568

Dactylographie Ctrl + Break est la manière correcte de générer un thread dump sous Windows.

Est-ce que vous appuyez sur Ctrl + C (=interrompre) peut-être ? Cela enverra un SIGINT, qui tuera généralement votre processus.

5voto

Dans le JDK+ de Java 6, l'exécutable jvisualvm vous permet de vous attacher à un programme en cours d'exécution (double-cliquez sur son entrée dans la partie gauche).

Lorsqu'il est attaché, il y a un panneau Threads sur le côté droit, qui a un bouton Thread Dump.

Cela vous donne un vidage de fil.

Une fois généré, vous pouvez A) Sélectionner tout - Copier et coller le vidage de fil dans un éditeur de texte. ou B) vous pouvez faire un clic droit sur le vidage de fil créé dans l'arbre sur le côté gauche et dire "Enregistrer sous".

Notes jvisualvm vous permet également de prendre des instantanés de l'ensemble de l'application pour une analyse ultérieure.

1voto

Gladwin B Points 2804

1voto

Adamski Points 29884

En plus de la réponse de Seth, vous pouvez également lancer une JConsole sur votre machine afin d'inspecter la trace de la pile de chaque thread. Cela présente l'avantage supplémentaire de pouvoir détecter les blocages et de surveiller l'utilisation de la mémoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X