关于 Arthas

命令:

表达式常用变量:params 入参数组(params0)、 returnObj返回值、 throwExp异常、 target this(实例字段:target.someField)、#cost耗时ms。末尾还能跟条件表达式,比如只要返回非空:'returnObj' 'returnObj.size()>0'

平时用的比较多的是

bash
dashboard 总览:线程CPU/内存/GC
thread 线程列表按CPU排序
thread 看某线程堆栈;thread -b 直接找死锁
sc -d *InstanceResult 搜类,谁加载的、jar路径(classloader问题查这个)
sm 类 方法 搜方法存在性
trace 类 方法 方法内部调用链 + 每步耗时,查"慢在哪"首选
watch 类 方法 '{params,returnObj,throwExp}' -x 2 看入参,返回,异常
watch 类 方法 'returnObj' -b -b入口时看,默认返回时;-e异常时;-s成功时
stack 类 方法 反向,谁调用了这个方法(不知道入口在哪时神器)
tt -t 类 方法 时空隧道录现场,事后可回放
tt -l /tt -i 1000 -w 'target.params' / tt -i 1000 -r 列表/查看/重放调用
jad类 --source-path / tmp 反编译线上实际运行的代码(怀疑部署版本不对时用)
ognl '@java.lang.System@getProperty("user.home")' 静态求值/调静态方法
vmtool --action getInstances --className 类 --express 'instances0.field' 直接从堆里抓一个现存对象看字段,watch 抓不到的"已存在的值"用它
logger --name ROOT --level debug 线上临时改日志级别
profiler start / stop --format html 火焰图,CPU 热点
heapdump /tmp/dump.hprof 导堆给 MAT 分析
reset 类 / stop 探针 / 彻底卸载

慢 → trace;

值 → watch/tt;

谁调的 → stack;

调用方未知类加载异常 → sc -d;

线上代码是不是我看的这份 → jad

相关推荐
Pniubi38 分钟前
怎么排查慢SQL,怎么解决?
java·数据库·sql
薛之谦_2 小时前
Java 全栈知识体系:从 IDEA 高效开发到 JVM、并发与 Stream 实战
java·jvm·intellij-idea
用户47949283569152 小时前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
努力的小雨3 小时前
别再复制日志给AI了!我让Codex自己去观测云查报错
后端
afumu5 小时前
Go 写一个只监听 127.0.0.1 的控制服务:鉴权、白名单、危险命令拦截
后端·安全·go
文丑颜不良啊6 小时前
LeetCode2761~2780题目解析
java·leetcode
johnjincaaaa6 小时前
猿人学第 18 题「jsvmp 洞察先机」逆向通关实录
javascript·后端
用户4702784004056 小时前
C语言编译与链接
后端·开源
你三大爷6 小时前
从 Hessian 迁移到 protostuff:深嵌套模型反序列化耗时与高并发类加载锁的根治实战
后端·架构
IT枫斗者枫哥6 小时前
子线程断言失败,JUnit 为什么还显示通过?
java·后端