有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

垃圾收集无法在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) 个答案

  1. # 1 楼答案

    答案是,你不能

    如果深入研究JVM源代码,您会发现日志框架将尝试使用fopen库调用打开您提供的文件名。如果日志文件不存在,则会创建它(文件打开模式为append)。但是,日志代码不会尝试遍历提供的路径,并在不存在目录的地方创建目录

    对于JVM来说,这并不是不合理的行为

    如果你真的想这样做,你需要一个脚本来确保在运行你的应用程序之前目录存在