Arthas-学习笔记
大约 1 分钟arthasarthas
Arthas基础命令
dashboard
dashboard命令可以查看当前系统的实时数据面板,输入Q或者CTRL+C退出命令

thread -1命令打印线程ID 1的栈

sc命令来查找JVM里已加载的类,-d可以打印出类加载的具体信息,如果搜索的是接口会查找所有的实现类
jad命令来反编译代码jad demo.MathGamewatch命令可以查看函数的参数/返回值/异常信息watch demo.MathGame primeFactors returnObjvmtool命令,可以搜索内存对象vmtool --action getInstances --className java.lang.String --limit 10sysprop可以打印所有的System Properties信息
指定单个key: sysprop java.version
通过grep来过滤: sysprop | grep user
设置新的值: sysprop testKey testValue
sysenv可以获取环境变量
jvm命令会打印出JVM的各种详细信息sm命令则是查找类的具体函数sm java.math.RoundingMode-d参数打印函数的具体属性
sm -d java.math.RoundingMode也可以查找特定的函数,比如查找构造函数:
sm java.math.RoundingMode <init>jad反编译代码
热更新代码
jad反编译UserController
jad --source-only com.example.demo.arthas.user.EsRestClientConfig > /tmp/EsRestClientConfig.java更新代码 26a1ab54
sc查找对应的classLoader
sc -d *EsRestClientConfig | grep classLoaderHash使用mc命令编译
mc -c 26a1ab54 /tmp/EsRestClientConfig.java -d /tmp使用
redefine命令重新加载新编译好的UserController.classredefine /tmp/com/example/demo/arthas/user/UserController.class