垃圾收集无法在java 11中生成GC日志
我正在尝试在不存在的文件夹中用Java11创建gc日志。xxx文件夹不存在
C:\>java -Xlog:gc*:file=C:\Users\xxx\gc.log --version
[0.006s][error][logging] Error opening log file 'C:\Users\xxx\gc.log': No such file or directory
[0.006s][error][logging] Initialization of output 'file=C:\Users\xxx\gc.log' using options '(null)' failed.
Invalid -Xlog option '-Xlog:gc*:file=C:\Users\xxx\gc.log', see error log for details.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
如何在不存在的文件夹中获取gc
日志?
如果文件夹存在,则工作正常
java -version
openjdk version "11.0.5" 2019-10-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.5+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.5+10, mixed mode)
# 1 楼答案
答案是,你不能
如果深入研究JVM源代码,您会发现日志框架将尝试使用fopen库调用打开您提供的文件名。如果日志文件不存在,则会创建它(文件打开模式为append)。但是,日志代码不会尝试遍历提供的路径,并在不存在目录的地方创建目录
对于JVM来说,这并不是不合理的行为
如果你真的想这样做,你需要一个脚本来确保在运行你的应用程序之前目录存在