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

JVM方法意外重编译咨询:基于PrintCompilation日志分析

Java PrintCompilation日志分析解答

原始日志

Time             Tier          Method         
11:20:24         3              m
11:24:14         3              m made not entrant
11:24:15         2              m
11:24:20         4              m
11:24:21         2              m made not entrant

问题1解答

11:24:14到11:24:15这段时间,原Tier3编译的m方法被标记为not entrant(无法被新调用进入),而Tier2版本的编译还未完成。此时方法m的执行会回退到解释执行——因为旧的编译代码已经不能被新调用使用,新的编译版本又没就绪,只能靠解释器处理请求。

问题2解答

在未发生反优化、代码缓存未占满的前提下,方法m被标记为not entrant并在Tier2重编译的可能原因有这些:

  • 编译策略调整:JVM分层编译中,Tier3是带轻量 profiling 的编译版本,当运行时收集到的 profiling 数据显示该方法不需要再持续收集 profiling 信息时,会触发降级编译到Tier2(Tier2是不带profiling的优化编译,执行效率更稳定),同时标记旧的Tier3版本不可进入。
  • 编译任务调度优化:JVM的编译线程可能之前优先处理了其他高优先级编译任务,后续调度时选择用Tier2重新编译m,为避免新调用使用旧的Tier3版本,先将其标记为not entrant。
  • profiling数据补全:Tier3编译时收集的 profiling 数据不够完整,后续运行中补充的数据表明,用Tier2的优化策略更适配m的实际执行模式,因此触发重编译,同时禁用旧版本的进入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:52:31