arthas 的 trace 命令可实时动态监控方法耗时,无需日志或重启;支持按调用次数、jdk 方法、参数条件、耗时阈值等灵活过滤,并提供 web 界面聚合分析。

用 Arthas 实时查看方法耗时,核心是 trace 命令。它不依赖日志、不重启应用,直接在运行中的 JVM 上动态增强字节码,捕获调用链和每层耗时。
快速定位目标方法并执行 trace
先确认你要分析的方法全限定名(比如 com.example.order.OrderService.createOrder),然后在 Arthas 控制台输入:
- trace com.example.order.OrderService createOrder —— 跟踪该方法及其所有内部调用,实时输出每次执行的完整路径和各节点耗时
- 如果想只看最慢的前 5 次调用:trace com.example.order.OrderService createOrder -n 5
- 若需包含 JDK 方法(如
String.indexOf、ArrayList.add)以便排查底层瓶颈:trace com.example.order.OrderService createOrder --skipJDKMethod false
理解输出结果的关键信息
执行后,控制台会持续打印类似这样的结构:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 每条记录包含:方法名、调用次数、总耗时、平均耗时、最大耗时
- 调用栈以缩进形式展开,每一层显示「方法名 + 耗时(ms)」,耗时越长颜色越深(默认红色高亮)
- 最顶层是目标方法,往下是它调用的子方法;某一层明显比其他层慢,就是性能热点
按条件过滤或聚焦业务逻辑
避免噪音干扰,可加条件表达式缩小范围:
- 只跟踪参数中 userId 为 1001 的调用:trace com.example.order.OrderService createOrder 'params[0].userId == 1001'
- 跳过耗时低于 10ms 的调用(减少刷屏):trace com.example.order.OrderService createOrder '@duration > 10'
- 匹配多个方法(如所有以
query开头的方法):trace -e com.example.dao.* query.*
辅助验证:结合 Web 界面看聚合视图
trace 是实时流式输出,适合快速抓取单次慢调用;如需统计趋势或多人协作分析,可打开浏览器访问:
- http://localhost:3658/arthas-output/(默认端口 3658)
- 这里会自动生成 profiler 报告,含火焰图、调用频次热力图、方法耗时 TopN 列表
- 适合识别“高频+低耗时”累积成慢的问题,或对比不同时间点的调用分布变化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










