
日志 64

var intv1 = setInterval('$(".btn-lg").click();', 30);
clearInterval(intv1);

Arthas热更新代码
1、记下类的classLoaderHash
sc -d *UserController | grep classLoaderHash
classLoaderHash 19469ea2
2、反编译代码
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
3、再开一个Terminal ,vim /tmp/UserController.java
4、保存好/tmp/UserController.java之后,使用mc(Memory Compiler)命令来编译,并且通过-c或者–classLoaderClass参数指定ClassLoader:
mc -c 19469ea2 /tmp/UserController.java -d /tmp
5、加载外部的class文件,实现热更新
redefine -c 19469ea2 /tmp/com/example/demo/arthas/user/UserController.class

Arthas:watch命令 支持按请求耗时进行过滤
watch com.example.demo.arthas.user.UserController * '{params, returnObj}' '#cost>200'

Arthas:watch命令 支持-e选项,表示只捕获抛出异常时的请求
watch com.example.demo.arthas.user.UserController * "{params[0],throwExp}" -e

Arthas:watch命令 第4个参数里写表达式
watch com.example.demo.arthas.user.UserController * returnObj 'params[0]>100'
, 方法的第一个参数大于100的时候,才会打印

Arthas:watch 类全路径 方法名 ognl表达式 -x 展开层级数
类名、方法名 支持通配,ognl表达式 '{params, throwExp}'是指查看参数和异常,还有其他值可以选loader、clazz、method、target、params、returnObj、throwExp、isBefore、isThrow、isReturn

Arthas里,有一个单独的ognl命令,可以动态执行代码

Arthas :查找JVM里已加载的类 sc ,-d参数,可以打印出类加载的具体信息

Arthas dashboard 可以查看CPU、内存、GC、运行环境等信息。

Arthas java -jar arthas-boot.jar
arthas-boot是Arthas的启动程序,它启动后,会列出所有的Java进程,用户可以选择需要诊断的目标进程