Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
官网:https://arthas.aliyun.com/doc/
Arthas的功能列表如下:
安装方法:
1、将 arthas-boot.jar 文件复制到任意工作目录。
2、使用java -jar arthas-boot.jar
启动程序。
3、输入需要Arthas监控的进程id。
4、输入命令即可使用。
dump
命令详解:https://arthas.aliyun.com/doc/dump.html
dump命令可以将字节码文件保存到本地,如下将java.lang.String
的字节码文件保存到了/tmp/output目录下:
$ dump -d /tmp/output java.lang.String
HASHCODE CLASSLOADER LOCATION
null /tmp/output/java/lang/String.class
Affect(row-cnt:1) cost in 138 ms.
jad
命令详解:https://arthas.aliyun.com/doc/jad.html
jad命令可以将类的字节码文件进行反编译成源代码,用于确认服务器上的字节码文件是否是最新的,如下将demo.MathGame的源代码进行了显示。
$ jad --source-only demo.MathGame
/*
* Decompiled with CFR 0_132.
*/
package demo;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
public class MathGame {
private static Random random = new Random();
public int illegalArgumentCount = 0;
...
这里只是记录一下Arthas这个诊断工具,对jvm的学习很有帮助,对于查看堆区内存以及之后的gc调优都是非常好用的工具。