JVM的崩溃转储是否可以指定存放位置?

13

我们有一个使用JNI的桌面应用程序,偶尔会导致JVM崩溃。幸运的是,JVM生成了一个相当有用的hs_err_pidXXXX.log文件,可以用于调试此类错误。但是,它似乎总是进入当前工作目录,从那里挖掘它很烦人,因为我们的其他日志文件都进入特定的“日志文件位置”。

是否可以为这些“崩溃转储”文件指定不同的位置?如何操作?


1
顺便说一句,在Windows上使用Everything(https://www.voidtools.com/)按名称搜索文件非常方便。 - tedyyu
2个回答

16

Joonas,

虽然HeapDumpPath适用于堆转储,但它不是你问题的答案。堆转储和JVM崩溃日志是两个不同的东西。

要更改JVM崩溃日志的目标位置,请使用以下选项运行Java:

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

Path/to/file是你希望JVM崩溃日志输出的位置。


如何使用此选项运行Java?我无法通过cmd执行。 - Muhammed Refaat
2
@MuhammedRefaat 在控制台上输入:java -XX:ErrorFile=/path/to/file.log -jar myapp.jar - sja

8

默认情况下,堆转储文件在VM的工作目录中名为java_pidpid.hprof。您可以使用-XX:HeapDumpPath=选项指定替代文件名或目录。例如,-XX:HeapDumpPath=/disk2/dumps将导致堆转储生成在/disk2/dumps目录中。


4
这个问题关乎崩溃日志,而不是堆转储,正如被采纳的答案所指出的那样。这仍然是有用的信息,但并不是这个问题的答案。 - John McCarthy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接