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

JDK Mission Control 7.0.1中Call Tree功能位置及方法CPU占比查询

Hey there! 我之前也折腾过开源版JMC和闭源版的功能差异,刚好能给你捋清楚~

关于开源版JMC 7.0.1的CPU耗时调用树功能

闭源版JMC的「Code」标签功能,在开源版里其实是整合到Flight Recorder(JFR)的分析视图里了——毕竟JFR现在是OpenJDK的核心组件,和JMC深度绑定。具体操作步骤是:

  1. 录制Flight Recorder记录
    连接到你的Java 11应用后,右键点击应用节点,选择「Start Flight Recording」。在配置界面里,一定要确保开启了方法分析相关的选项:

    • 轻量排查选「Sample based profiling」(默认可能已勾选):通过定期采样线程栈统计CPU耗时,性能开销极小;
    • 需精确方法级统计选「Instrumented profiling」:能追踪每个方法的调用次数、精确耗时,但会有一定性能开销,更适合测试环境使用。
  2. 查看调用树
    录制完成后打开生成的.jfr文件,在左侧导航面板找到**「Profiling」**标签,展开后就能看到「Call Tree」视图。这里的功能和闭源版基本一致:

    • 可按CPU耗时从高到低排序,快速定位最消耗CPU的方法;
    • 点击节点展开能看到完整调用链,清楚知道上层触发方法;
    • 还能切换到「Hot Methods」视图,直接列出Top N高CPU方法,更直观。
其他查看方法CPU使用率的途径

如果暂时不想用JFR,还有两个实用方式:

  • JMC的Threads标签
    打开应用的「Threads」标签,切换到「CPU Usage」视图,能看到每个线程的实时CPU占比。发现高CPU线程后,右键选择「Take Thread Dump」,从栈帧里就能看到该线程当前执行的方法,多次快照对比就能定位持续耗时的代码。

  • 命令行工具组合
    用系统工具+JDK命令行工具手动排查:

    • Linux/macOS:先用top -H找到高CPU的线程ID(注意是线程ID而非进程ID),转成十六进制;再用jstack <进程ID>导出线程栈,搜索十六进制线程ID,对应的栈帧就是当前执行的方法。
    • Windows:打开任务管理器找到Java进程,查看线程列表定位高CPU线程,转成十六进制后用jstack排查。不过这种方式是快照式的,不如JFR的连续采样全面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:02:49