arthas安装及使用官网
https://alibaba.github.io/arthas/install-detail.html
https://github.com/alibaba/arthas/blob/master/README_CN.md
java -jar arthas-boot.jar启动
可以看到日志输出的java进程,输入进程序号回车,arthas会attach到java进程中
常用命令
jvm
比jinfo强大的多,可以看到年代垃圾回收算法详情,线程数,内存情况等等信息
thread
相当于jstack,可以观察线程类型的问题
可以通过thread提供的线程列表中的线程号,使用thread 线程号,查看该线程的具体情况和代码调用
dashboard
相当于top,可以观察整个系统情况
heapdump 文件目录/文件名(不指定默认到/tmp)
导出堆转储文件,肯定会影响服务器,造成卡顿,尽量不要导。jmap方式 jmap -dump:format=b,file=xxx pid1、导出的堆转储文件,可以用jdk自带的jhat 文件名进行分析,如果文件过大,需要加参数 -J-mx512M 扩大它的解析内存
2、jhat会提供一个http端口,可以通过页面观察文件情况,在页面最下方 Show instance counts for all classes (including platform),可以看到类似于jmap的对象数量数据情况
3、还有一个Execute Object Query Language (OQL) query 使用类似于sql的查询功能,哈哈
eg: select s from java.lang.String s 注意都需要加别名才可以
点击具体的对象,可以看到对象的实例数、有多少对象引用等等
4、jvisualVM也有OQL的查询功能,如果能拿到本地,用jvisualVM把!
jad 类绝对路径 反编译
可以查看诸如,代码版本问题,第三方类问题等等
redefine 热替换
可以改动方法实现。 方法名和属性不要改,替换class文件
使用redefine class文件 实现热替换