Java 在启动参数中开启 JFR 指定事件采集

Java JFR About 1,385 words

JFR 配置

default.jfc配置内容片段。

<event name="jdk.VirtualThreadStart">
  <setting name="enabled">false</setting>
  <setting name="stackTrace">true</setting>
</event>

<event name="jdk.VirtualThreadEnd">
  <setting name="enabled">false</setting>
</event>

<event name="jdk.MethodTrace">
  <setting name="enabled">true</setting>
  <setting name="filter" control="method-trace"></setting>
  <setting name="threshold">0 ms</setting>
  <setting name="stackTrace">true</setting>
</event>

<event name="jdk.MethodTiming">
  <setting name="enabled">true</setting>
  <setting name="filter" control="method-timing"></setting>
  <setting name="period">endChunk</setting>
</event>

启动参数

开启 jdk.VirtualThreadStart

使用EventName+#+SettingName来指定需要启用的事件。

java -XX:StartFlightRecording:jdk.VirtualThreadStart#enabled=true -jar app.jar

开启 method-timing

使用setting中的control配置名称,指定需要统计的类。

java -XX:StartFlightRecording:method-timing=@org.springframework.web.bind.annotation.RestController,jdk.MethodTiming#period=5s -jar app.jar

JFR check

使用jcmd中的JFR.check,并指定verbose=true,查看启动参数是否生效。

PS jdk\openjdk-25> jcmd.exe 1240 JFR.check verbose=true
1240:
Recording 1: name=1 maxsize=250.0MB (running)

 Method Timing (jdk.MethodTiming)
   [period=5 s,filter=@org.springframework.web.bind.annotation.RestController,enabled=true]
 Method Trace (jdk.MethodTrace)
   [threshold=0 ms,stackTrace=true,filter=,enabled=true]
...
Views: 3 · Posted: 2026-01-03

———         Thanks for Reading         ———

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Today In History
Browsing Refresh