用了arthas之后,才发现世界上竟有如此美妙的jar包
arthas,中文叫阿尔萨斯,是魔兽世界里的一个Boss吧。这是阿里巴巴开发的java监控的jar。如果你熟悉jdk内置工具的话,肯定对此等功能不陌生,但arthas也有它自己的特色。
1、下载并使用
arthas的使用方法之一是下载它的arthas-boot.jar,https://alibaba.github.io/arthas/arthas-boot.j
然后java -jar arthas-boot.jar即可。
你要监控哪个进程就填几,我这里监控1,,然后回车到了控制台
进去先输入help,查看下帮助命令,可以看到有很多,我们选择主要的说明:
1.dashboard,可以查看简单的堆栈快照,每5秒钟一刷
很明显可以看到最上面的是thread区,中间的是堆,下面的虚拟机版本
ctrl +C 可以取消查看
2.thread
我们可以看到dashbroad里的thread区第一列有编号,那么你就可以
thread 编号
来查看其栈。这里查看thread 1
thread -n 3 可以查看使用cpu前三的线程
3.jad 反编译
我们看到里面有个lamdaTest这个类,然后我们
jad com.bai,test.lambda.LamdaTest
果然反编译了,查看代码可以得知,里面每秒调用一次aaa,aaa会根据随机int返回%2的值。
4.watch 监控方法,比如
watch com.bai,test.lambda.LamdaTest aaa params
结果是:
可以看到每秒执行一次,每次传入的参数都不一样,分别是49.63,82,19等
注意watch函数的最后一个参数不仅可以填params,还可以监控返回值,这个是要Tab提示或者使用help就了解了。
private函数也能监控哎
5.ognl表达式
对于arthas来说,ognl非常重要,因为他能够执行。
使用命令,ognl @[email protected](100)
结果程序真的执行了aaa这个方法,且参数是100,返回值是0