arthas是java生产环境排查性能热点的高效工具,支持实时方法耗时分析、调用链追踪、火焰图生成及内存gc联动诊断。

Arthas 是 Java 生产环境里排查性能热点最直接有效的工具之一,不用重启、不改代码,就能实时看到方法耗时、调用链路和热点分布。
核心思路是:先定位高耗时方法 → 追踪调用链路 → 分析参数与异常 → 结合火焰图确认瓶颈位置。
快速定位 CPU 热点方法
-
dashboard命令启动实时概览面板,重点关注 “thread” 区的 CPU 使用率和 top N 耗时线程 -
thread -n 5查看 CPU 占用最高的前 5 个线程,确认是否处于 RUNNABLE 状态并记录线程 ID -
thread <id></id>查看该线程堆栈,判断它卡在哪个类或方法里
深度追踪方法执行耗时
-
trace -j com.example.service.UserService login-j参数跳过 JDK 内部方法,聚焦业务逻辑;可加-n 10限制采样次数,避免影响线上性能 -
watch com.example.controller.OrderController createOrder '{params,returnObj,throwExp}' -x 3
实时观察入参、返回值和异常,适合验证慢接口是否因某类数据触发异常分支
生成火焰图辅助分析
-
profiler start启动异步采样(默认 100Hz) - 等待 30–60 秒后执行
profiler stop - 输出结果会给出 SVG 文件路径,下载后用浏览器打开即可看到可视化火焰图
- 注意:采样期间会有轻微性能开销,建议避开业务高峰时段使用
结合内存与 GC 排除干扰因素
-
vmtool --action getInstances --className java.lang.String --limit 10
检查是否存在大量临时字符串堆积 -
jvm和memory查看堆内存使用趋势,确认是否因频繁 GC 导致 CPU 虚高 - 若发现 old gen 持续增长且 Full GC 频繁,需同步排查内存泄漏,再回看 CPU 热点是否为 GC 衍生现象
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











