1、Arthas下载安装解压启动
下载地址:https://arthas.gitee.io/download.html
windows环境建议用直接通过jar包启动,并加上utf-8编码,不然中文会有乱码
java -Dfile.encoding=UTF-8 -jar arthas-boot.jar <pid>

2、使用watch命令查看方法入参、返回值和对象的成员变量
watch <完整类名> 方法名 'params, returnObj,target' -x 2 -f
params:入参
returnObj:返回值
target:当前对象的成员变量
-x 打印对象深度,如果传入是对象类型看不到属性具体值,则可加大打印深度
-b 在方法调用之前观察
-e 在方法异常之后观察
-s 在方法返回之后观察
-f 在方法结束之后(正常返回和异常返回)观察
例:watch javacommon.base.hibernatedao.HibernateDao findPage '{params, returnObj}' -x 4 -f
其他高级用法参考官方文档https://arthas.gitee.io/watch.html
同名方法重载如何判断https://github.com/alibaba/arthas/issues/434
3、使用retransform / redefine命令进行热更新、实现不重启应用修改类,添加日志或修改逻辑
retransform和redefine都可以实现热更新,但是不能修改、添加、删除类的field和method,包括方法参数、方法名称及返回值
但是redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置
从3.4.6版本后添加了retransform命令,解决了上面的问题,推荐使用retransform https://arthas.aliyun.com/doc/retransform.html
热更新命令:retransform <类文件绝对路径>

如果对某个类执行 retransform 之后,想消除影响,恢复到修改之前,则需要:
删除这个类对应的 retransform
retransform -l //列出所有
retransform -d 1 //删除指定
retransform --deleteAll //删除所有
再重新触发 retransform --classPattern <类名>

4、使用trace命令查看方法执行时间,定位系统缓慢原因 https://arthas.gitee.io/trace.html
trace <类全名> <方法名>
