diff --git a/初识JFR.md b/初识JFR.md index c6223fd..d9675a3 100644 --- a/初识JFR.md +++ b/初识JFR.md @@ -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 是一个经验值| + +### 配置项的联系和区别