On m'a dit que je pouvais ajouter le -XX:+HeapDumpOnOutOfMemoryError
paramètre à mes options de démarrage JVM à mon script de démarrage JBoss pour obtenir un vidage de tas lorsque nous obtenons une erreur de mémoire insuffisante dans notre application. Je me demandais où ces données sont vidées? S'agit-il uniquement de la console ou d'un fichier journal? Si c'est juste à la console, que faire si je ne suis pas connecté au serveur Unix via la console?
java
jboss
memory-leaks
heap
Dmitry Trunov
la source
la source
Réponses:
Voici ce que la documentation d'Oracle a à dire:
la source
HeapDumpPath
, vous verrez quelque chose de similaire"Unable to create /tmp/java_pidpid.hprof: File exists"
dans votre sortie standard. Assurez-vous de déplacer votre fichier de vidage hors du chemin de vidage pour dégager la voie pour tous les fichiers de vidage futurs; et utilisez l'<pid>
espace réservé dans le nom de fichier pour augmenter l'entropie dans le nom de fichier.Vous pouvez afficher ce vidage à partir de la console UNIX.
Le chemin du vidage du tas sera fourni sous forme de variable juste après l'endroit où vous avez placé la variable mentionnée.
Par exemple:
Vous pouvez afficher le vidage à partir de la console sur le chemin mentionné.
la source
J'ai eu du mal à déchiffrer ce que l'on entend par "répertoire de travail de la VM". Dans mon exemple, j'utilisais le programme Java Service Wrapper pour exécuter un jar - les fichiers de vidage ont été créés dans le répertoire où j'avais placé le programme wrapper, par exemple c: \ myapp \ bin. La raison pour laquelle j'ai découvert cela est que les fichiers peuvent être assez volumineux et qu'ils ont rempli le disque dur avant que je découvre leur emplacement.
la source
Si vous n'utilisez pas l'option "-XX: HeapDumpPath", dans le cas de JBoss EAP / As par défaut, le fichier de vidage de tas sera généré dans le répertoire "JBOSS_HOME / bin".
la source