更新 初识JFR.md
This commit is contained in:
parent
d2f441bb6e
commit
d2077861cd
@ -75,3 +75,32 @@ Event 是多线程产生的,如果 Event 记录要保证全局有序,那么
|
||||
⚠️数据在从 Thread Buffer 刷入 Global Bufeer 的时候, 去 dump JFR 的数据,可能这部分数据会被忽略而导致看不到。
|
||||
|
||||
⚠️从 Global Buffer 刷入磁盘不够快的时候,这时候要刷入磁盘的数据可能被丢弃。此时会记录下 Data Loss Event 包含了哪块时间的数据丢了,通过 JFR 日志也能看到这个信息。
|
||||
|
||||
### 开启JFR
|
||||
有2种方式开启,通过启动参数在启动的时候开启、jcmd在运行时启用/关闭。
|
||||
|
||||
#### 启动参数
|
||||
|
||||
在JDK11以后,启动参数简化了。
|
||||
|
||||
- 启动JFR记录的参数:`-XX:StartFlightRecording`
|
||||
- 用于配置JFR的参数:`-XX:FlightRecorderOptions`
|
||||
|
||||
*JDK8中的`-XX:+FlightRecorder`状态位不再需要了*
|
||||
|
||||
#### StartFlightRecording
|
||||
|
||||
|配置项|默认值|说明|
|
||||
|:-----|:------|:-----|
|
||||
|delay|0|延迟多久后启动 JFR 记录,支持带单位,例如:delay=60s、delay=20m、delay=1h、 delay=1d|
|
||||
|disk |true|是否写入磁盘,控制 global buffer 满了之后,是丢弃还是写入磁盘|
|
||||
|dumponexit |false |程序退出时,是否要dump出 .jfr文件|
|
||||
|duration | 0 | JFR 记录持续时间,支持单位配置,0代表一直记录|
|
||||
|filename |- | dump的输出文件,例如:启动目录/hotspot-pid-26732-id-1-2020_03_12_10_07_22.jfr,pid是进程id,id后面的1代表第1个jfr文件|
|
||||
|name | - | 由于可以启动多个 JFR 记录,这个名称用于区分,否则只能看到一个记录 id,不好区分|
|
||||
|maxage | 0 | disk=true生效,global buffer 刷入的文件保留时间,支持单位配置,0代表一直保存|
|
||||
|maxsize | - | disk=true生效,global buffer 刷入的文件最大值,支持单位配置(MB、GB)例如:250MB,这个配置不能小于**maxchunksize**参数|
|
||||
|path-to-gc-roots| false | 是否记录GC根节点到活动对象的路径,一般不打开这个,性能损耗比较大,会导致FullGC。一般是在怀疑有内存泄漏、通过对象堆栈无法定位的时候动态打开。例如 ThreadLocal 没有释放这样的,可以在 dump 的时候采集 gc roots|
|
||||
|settings | default.jfc| 采集 Event 的详细配置,可选值:default.jfc、profile.jfc|
|
||||
|
||||
#### FlightRecorderOptions
|
Loading…
Reference in New Issue
Block a user