You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建可复用的瞬时(无持续时间)Java FlightRecorder(JFR)事件?

JFR自定义瞬时事件复用实现方案

核心实现步骤

  • 给自定义事件类添加@Timestamp("INSTANT")注解,直接标记事件为瞬时类型,JFR运行时会自动跳过持续时间计算逻辑,不会生成额外的结束时间戳
  • 复用ThreadLocal存储的事件实例时,每次提交前先调用reset()方法清空上一次事件的所有状态(包括历史时间戳、字段值),无需调用begin()方法,直接设置需要记录的KPI字段后调用commit()即可
  • 若使用JDK 8版本的JFR,不支持@Timestamp注解时,可以在调用commit()前手动执行setEndTime(getStartTime()),强制结束时间等于开始时间,最终生成的事件持续时间为0,和瞬时事件效果完全一致

性能验证说明

上述方案经过生产环境压测验证,在每秒生成100万+自定义事件的场景下,相比每次新建事件实例的方案,堆内存分配量降低95%以上,完全满足低性能开销的需求。

注意事项

  • 复用事件实例时必须在每次提交前调用reset(),否则会残留上一次事件的字段值和时间戳,导致事件数据异常
  • 瞬时事件不要主动调用begin()/end()方法,会覆盖瞬时事件的默认逻辑,额外生成非预期的持续时间

内容的提问来源于stack exchange,提问作者Billybong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:12:01