gpt4 book ai didi

java - 为什么我有不止一份 JFR 录音?

转载 作者:行者123 更新时间:2023-11-30 01:46:15 34 4
gpt4 key购买 nike

掌握 Java Flight recorder (JFR) 配置,我有一个最合理的配置:

-XX:+UnlockCommercialFeatures -XX:+DebugNonSafepoints -XX:+FlightRecorder 
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,dumponexitpath=../logs
-XX:StartFlightRecording=compress=true,maxsize=1g

但是,使用 JFR.check 显示我正在进行的记录不是一个,而是两个

Recording: recording=0 name="HotSpot default" (running)

Recording: recording=1 name="Recording 1" maxsize=1.0GB (running)

录音0是怎么发生的?

最佳答案

我们一直在努力简化命令行。对于 JDK 11 及更高版本,这是我推荐的。

$ java -XX:StartFlightRecording:maxsize=1g,filename=../logs

我提到这一点是为了减少阅读本文的人使用更新版本的 JDK 时的困惑。

您获得两个录音的原因是

-XX:FlightRecorderOption=defaultrecording=true 

开始录音。

更复杂的是,如果您想在指定目录(即 ../logs)中创建记录,以便为每个 JVM 进程生成唯一的文件名,则需要使用

-XX:FlightRecordingOption=dumponexitpath=<directory> 

在 JDK 7/8 上仅适用于以 defaultrecording=true 开始的录制。我认为如果您更改为以下内容,可以删除 -XX:StartFlightRecording:

-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,
disk=true,maxsize=1g,dumponexitpath=../logs

但是录音不会被压缩。

也就是说,上述内容不适用于 JDK 11 或更高版本,因为 defaultrecording=true 选项已被删除。相反,该功能已移至 -XX:StartFlightRecording:filename= 选项,其中默认启用压缩和磁盘,如果设置文件名,则 dumponexit=true 是多余的。

JVM 内部只运行一个记录,因此不必担心多个记录的开销。可以启动多个记录的原因是允许堆叠配置。例如,您可能希望始终运行低开销录制,然后开始持续十分钟的更具侵入性的录制。当十分钟结束时,JVM 将恢复到低开销配置。

还有更多,我可以就此写一篇文章,但我们就到此为止。

关于java - 为什么我有不止一份 JFR 录音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841060/

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