更新 初识JFR.md

This commit is contained in:
8ga 2025-03-11 14:50:12 +08:00
parent d2077861cd
commit c47c69c313

View File

@ -104,3 +104,19 @@ Event 是多线程产生的,如果 Event 记录要保证全局有序,那么
|settings | default.jfc| 采集 Event 的详细配置可选值default.jfc、profile.jfc|
#### FlightRecorderOptions
|配置项|默认值|说明|
|:-----|:------|:-----|
|allow_threadbuffers_to_disk | false | 在 thread buffer 线程阻塞的时候,是否将 thread buffer 内容直接写入文件。一般没必要开启这个参数,只要设置的参数让 global buffer 大小合理不至于刷盘很慢就行了|
|globalbuffersize |-|单个 global buffer 的大小,一般通过 memorysize 设置,自动计算得出,不建议自己设置|
|numglobalbuffers |-| global buffer 的个数,一般通过 memorysize 设置,自动计算得出,不建议自己设置|
|maxchunksize | 12MB | 存入磁盘的每个临时文件的大小不能小于1MB不能比**memorysize**小,更不能比**globalbuffersize**小,会导致性能下降|
|memorysize | 10MB | global buffer 占用的整体内存大小 |
|old-object-queue-size | 256 | 针对**Profiling**中的**Old Object Sample 事件**收集多少个**Old Object**。大佬的建议是256够用时间跨度大的例如 maxage 保存了一周以上的,可以翻倍|
|repository |-| 保存到磁盘的位置,等同于 -Djava.io.tmpdir 指定的目录|
|retransform | true | 是否通过 JVMTI 转换 JFR 相关 Event 类,如果设置为 false则只在 Event 类加载的时候添加相应的 Java Instrumentation。一般不用改这点内存 metaspace 还是足够的|
|samplethreads | true | 是否开启线程采集的状态位配置,只有为 true且在 Event 配置中开启了线程相关的采集,才会采集这些事件,后面会展开说|
|stackdepth | 64 | 采集事件堆栈深度,有些 Event 会采集堆栈,这个堆栈采集的深度,统一由这个配置指定。这个值不能设置过大,堆栈深度过大会影响性能。比如你用的是 default.jfc 配置的采集堆栈深度64基本上就是不影响性能的极限了。可以自定义采集某些事件增加堆栈深度。|
|threadbuffersize | 8KB | Thread Buffer 大小,增加会带来更多内存开销,减小会增加刷入 global buffer 的次数8KB 是一个经验值|
### 配置项的联系和区别