gpt4 book ai didi

Java Flight Recorder 不报告任何文件 I/O 事件

转载 作者:行者123 更新时间:2023-12-05 04:46:15 30 4
gpt4 key购买 nike

Java Flight Recorder 的一个广告功能是能够在 JMC 8.1 的文件 I/O 选项卡中报告创建、读取或强制的文件

为了测试此功能,我创建了一个小型应用程序,它使用 Apache commons-io 将大文件从源复制到目标。

public static void fileCopy(String srcPath ,String destPath) throws IOException {
File inpFile = new File(srcPath);
if(inpFile.exists() && inpFile.isFile()) {
File destFile = new File(destPath);
FileUtils.copyFile(inpFile, destFile);
}
}

在使用配置文件模板启动 FlightRecoder 并观察 jfr 文件时,我在文件 I/O 模板中看不到任何事件,即使复制操作花费了 11 秒。

使用 JVM - Ubuntu 上的 OpenJDK 11。

Flight Recorder Screenshot

 java -XX:StartFlightRecording=name=benchmark,filename=benchmark.jfr,settings=profile -jar filecopyer-0.0.1-SNAPSHOT.jar 

我也在 profile.jfc 模板中将文件 IO 阈值更改为 0 ns 后重试,但仍然没有记录任何事件。

jdk.FileWrite、jdk.FileRead 和 jdk.FileForce 只捕获了 0 个事件。

但是我确实在 jdk.NativeMethodSample 下看到了事件,commons-io 最终调用了它。

github 上的示例应用程序: Profiled application

我做错了什么?

最佳答案

看起来 Apache Commons 似乎使用的 Files.copy 的实现依赖于异步 I/O 来进行复制。参见 sun.nio.fs.UnixCopyFile::copy(...)

JFR 目前不检测异步 I/O 操作。

关于Java Flight Recorder 不报告任何文件 I/O 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68896858/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com