简介
Arthas 是阿里巴巴开源的监控jvm工具,功能强大并且非常简单。原理是通过JVM TI(Java 虚拟机提供的JVM监控的接口)实现,官网:https://arthas.gitee.io/
安装
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
常用操作
仪表盘 dashboard
查看线程和JVM的基本信息
jvm
类似jdk自带的jinfo,但是比jinfo更强大,可以显示垃圾回收算法
thread
线程基本的信息查看
thread -b 查看线程死锁
安装成功界面
sc
扫描加载的类
sc *
sc *com.xxx
sm
查询类中的方法
sm 包名.类名
trace
获取方法的访问次数
jad
反编译工具
使用场景:
- 动态代理生成类的问题定位;
- 第三方的类(观察代码)
- 版本问题(确定自己最新提交的版本是不是被使用)
redefine
热替换,搭配jad一起使用,达到不重启服务器的情况下替换代码(很强)
目前有些限制条件:只能改方法实现(方法已经运行完成),不能改方法名, 不能改属性
启动问题
上次未正常关闭报错
The telnet port 3658 is used by process 1094 instead of target process 8649, you will connect to an unexpected process.
[ERROR] 1. Try to restart arthas-boot, select process 1094, shutdown it first with running the ‘stop’ command.
[ERROR] 2. Or try to stop the existing arthas instance: java -jar arthas-client.jar 127.0.0.1 3658 -c “stop”
[ERROR] 3. Or try to use different telnet port, for example: java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
解决:
e: java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
解决:
重新启动arthas-boot.jar,输入stop命令,然后再重新启动即可