场景:
1 这个类从那个jar包加载的,为什么会报各种类相关的Exception。
2 我改的代码为什么没有执行到。
3 遇到问题无法线上debug,线下无法复现。
4 全局视角来查看系统的运行状态
5 快速定位应用的热点,生成火焰图。
方便之处
jdk 1.6+
linux/mac/windows
命令行交互模式
tab自动补全
下载arthas-boot.jar,使用java -jar直接启动
在线安装(windows)
curl https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
离线安装(linux)
用法:
定位高耗时代码。
java -jar arthas.jar
可以看到服务器上的java进程,选中java进程
trace 包名.类名 方法名
可以监听该方法,调用到该方法时打印调用链,并可以看到耗时,高亮显示异常耗时。
不停服地热部署应用。
编写好一个要替换的class文件,retransform 编译好的class文件位置
监听一个方法的参数和返回值。
watch 全类名 方法名 "{params[0],returnObj}",监听某个具体字段,watch 全类名 方法名 "{params[0].field,returnObj}"
火焰图。
开启profiler start,看状态profiler status,停止profiler stop,生成html文件,打开后查看红色部分为cpu过高的方法。
快速定位cpu过高代码和线程死锁问题。
thread命令查看当前的一个线程状态。thread 线程id,查看线程的详情状态。thread -n 3,查看cpu过高的前三个代码。thread -b 查看线程死锁代码。thread命令执行后,查看状态也能知道那些死锁线程,直接thread 线程id,查看详情。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!