是否可以指定 JVM 的故障转储去向何处?
2022-09-04 08:10:02
我们有一个使用JNI的桌面应用程序,偶尔会导致JVM崩溃。幸运的是,JVM会生成一个文件,这在调试此类错误时非常有用。但是,它似乎总是转到当前的工作目录,并且从那里挖掘它很烦人,因为我们的其他日志文件都转到特定的“日志文件位置”。hs_err_pidXXXX.log
是否可以为这些“故障转储”文件指定不同的位置?如何?
我们有一个使用JNI的桌面应用程序,偶尔会导致JVM崩溃。幸运的是,JVM会生成一个文件,这在调试此类错误时非常有用。但是,它似乎总是转到当前的工作目录,并且从那里挖掘它很烦人,因为我们的其他日志文件都转到特定的“日志文件位置”。hs_err_pidXXXX.log
是否可以为这些“故障转储”文件指定不同的位置?如何?
乔纳斯,
尽管 HeapDumpPath 适用于堆转储,但它不是您问题的答案。堆转储和 jvm 崩溃日志是两回事。
要更改 jvm 崩溃日志的目标,请使用此选项运行 java:
-XX:ErrorFile=/path/to/file.
Path/to/file 是您希望 JVM 崩溃日志输出的位置。
默认情况下,堆转储是在 VM 的工作目录中名为 java_pidpid.hprof 的文件中创建的。您可以使用 -XX:HeapDumpPath= 选项指定备用文件名或目录。例如-XX:HeapDumpPath=/disk2/dumps 将导致在 /disk2/dumps 目录中生成堆转储。