web-dev-qa-db-fra.com

Utilisation du paramètre HeapDumpOnOutOfMemoryError pour le vidage de segment de mémoire pour JBoss

On m'a dit que je pouvais ajouter le paramètre -XX:+HeapDumpOnOutOfMemoryError aux options de démarrage de ma machine virtuelle Java à 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 déversées? Est-ce juste pour la console ou pour un fichier de log? Si c'est juste pour la console, si je ne suis pas connecté au serveur Unix via la console?

176
EdC

Voici ce que la documentation d'Oracle a à dire:

Par défaut, le vidage de segment de mémoire est créé dans un fichier nommé Java _ pid . Hprof dans le répertoire de travail de la machine virtuelle, comme dans l'exemple ci-dessus. Vous pouvez spécifier un autre nom de fichier ou un autre répertoire avec l'option -XX:HeapDumpPath=. Par exemple, -XX:HeapDumpPath=/disk2/dumps entraînera la génération du tas dans le répertoire /disk2/dumps.

237
Matt Solnit

Vous pouvez afficher ce vidage à partir de la console UNIX.

Le chemin d'accès au vidage de tas sera fourni en tant que variable juste après l'endroit où vous avez placé la variable mentionnée.

Par exemple.:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

Vous pouvez afficher le vidage à partir de la console sur le chemin mentionné.

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 fichier jar. Les fichiers de vidage étaient créés dans le répertoire où j'avais placé le programme d'encapsulation, 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.

3
B5A7

Si vous n'utilisez pas l'option "-XX: HeapDumpPath", dans le cas de JBoss EAP/As, le fichier de vidage de segment de mémoire sera généré par défaut dans le répertoire "JBOSS_HOME/bin".

2
Swapnil Chaudhari