web-dev-qa-db-fra.com

Utilisation de l'option -XX: HeapDumpPath mais vous souhaitez intégrer l'ID de processus

Lors de l'utilisation de -XX:+HeapDumpOnOutOfMemoryError, la machine virtuelle Java n'écrase pas le vidage de segment de mémoire s'il existe déjà un fichier de vidage sous le chemin spécifié. Je veux pouvoir avoir plusieurs vidages de tas dans un emplacement autre que celui par défaut et je prévoyais d'utiliser le pid dans le chemin d'accès au tas pour permettre cela. 

Cependant, quand j'ai essayé de spécifier l'argument comme suit:

-XX:HeapDumpPath=some/heapdump/path/heapdump-%p.hprof

Et puis créé un tas de dump, j'ai eu %p et pas le pid réel dans le nom du fichier. Cependant, l'utilisation de %p semble fonctionner avec l'option -XX:OnOutOfMemoryError. Existe-t-il une autre syntaxe que je suis censé utiliser pour -XX:HeapDumpPath=?

14
Nina

Cela peut être un chemin d'accès à un répertoire de fichier OR. Si vous avez un chemin d'accès à un répertoire, le nom de fichier généré contiendra par défaut un pid.

http://www.Oracle.com/technetwork/Java/javase/tech/vmoptions-jsp-140102.html

17
Brett Okken

Vous devez ajouter le Java que vous utilisez. Ces options dépendent du fournisseur de la machine virtuelle Java (IBM, Oracle, etc.).

OnOutOfMemoryError indique WHEN pour effectuer le vidage. HeapDumpPath dit O mettre le dump. Je pense que l'utilisation de HeapDumpPath tourne sur le premier, mais je conseille d'utiliser les deux pour plus de clarté.

En ce qui concerne la question initiale, l’utilisation du pid dans le nom du fichier de vidage est une bonne pratique. Cela peut aider en particulier de coroler et d’analyser ce qui se passe après plusieurs problèmes/redémarrages.

La syntaxe exacte est expliquée ici .

0
mcoolive