2009-12-10 4 views
12

Nous avons une application de bureau utilisant JNI qui provoque parfois le crash de la JVM. Heureusement, la JVM produit un fichier hs_err_pidXXXX.log, ce qui est très utile pour le débogage de telles erreurs. Cependant, il semble toujours aller dans le répertoire de travail actuel, et c'est ennuyeux de le creuser à partir de là, puisque nos autres fichiers journaux vont tous à un "lieu de fichier journal" spécifique.Est-il possible de spécifier où les vidages sur incident JVM vont?

Est-il possible de spécifier un emplacement différent pour ces fichiers "crash dump"? Comment?

Répondre

12

Joonas,

Bien que le HeapDumpPath travaille pour le tas de vidage n'est pas la réponse à votre question. Le vidage de pile et le journal de plantage jvm sont deux choses distinctes.

Pour modifier la destination de la course journal crash jvm java avec cette option:

-XX:ErrorFile=/path/to/file. 

chemin/vers/fichier est l'endroit où vous voulez que le journal de plantage JVM à la sortie.

+0

comment exécuter Java avec cette option? Je ne pouvais pas faire ça via cmd –

+1

@MuhammedRefaat Sur la console: 'java -XX: ErrorFile =/chemin/vers/fichier.log -jar monapp.jar' – sja

+0

@sja merci beaucoup –

9

Par défaut, le vidage de tas est créé dans un fichier appelé java_pidpid.hprof dans le répertoire de travail de la machine virtuelle. Vous pouvez spécifier un autre nom de fichier ou répertoire avec l'option -XX: HeapDumpPath =. Par exemple, -XX: HeapDumpPath =/disk2/dumps provoquera la génération du vidage de tas dans le répertoire /disk2/dumps.

+1

-1 La question concerne le journal de plantage, pas la pile de mémoire, comme l'indique la réponse acceptée. C'est toujours une bonne info mais pas une réponse à cette question. –

Questions connexes