前言

后面咱们就曾经说了怎么装置Arthas了,那明天咱们就来聊一下Arthas的应用

一、筹备

咱们须要筹备一个java程序,启动之后不能进行的,那我就用一个简略的死循环程序
上面是一个死循环程序,始终输入a的值

public class test {    public static void main(String[] args) {        int a = 1;        while (a==1){            System.out.println(a);        }    }    }

二、测试

Windows下测试

启动这个程序,并且让他后盾运行

而后菜单键+R,运行cmd关上命令行,而后进入到Arthas的arthas-boot.jar目录,比方我的在D盘,所以我须要先进入D盘的门路,而后能力cd进入到我的目录

进入目录之后,应用下列命令启动Arthas

java -jar arthas-boot.jar

而后就会显示出咱们刚刚启动的test这个程序了,输出1之后按回车就能够启动Arthas来检测了
如果你想要检测其余的java程序的话,就输出程序名后面对应的数字

当然你也能够在浏览器里进行监控的操作,上图中有个链接,你在浏览器输出这个地址就能够应用浏览器来执行arthas命令

三、执行

咱们先执行一下help,看看有什么命令

显然,arthas的命令还是挺多的,前面会介绍的

那我先介绍一下几条罕用的吧

常用命令

提前说一条清理的命令,前面的常用命令展现的货色太多,须要清掉来难看一点

Windows下就是clear,Linux下就是cls

1.dashborad仪表板

输出dashborad之后,会呈现一个表格(如果没有呈现,阐明可能那个程序停了,要放弃test程序还在运行),这个叫仪表板

次要有三个局部,第一个是所有的线程状态,第二个是内存应用的状况,第三个是JVM的状态和Windows的信息

这些内容是会刷新的,可依据这些数据对这个程序以及java虚拟机进行监控,须要退出的话按Q或者Ctrl+C即可退出。

2.thread线程板

输出这个命令之后,也会呈现一张表,这个跟下面的第一条是相似的,显示的是所有线程的状况

每个线程后面会有一个id,输出 thread +对应的id能够查看的该线程的一些信息

3.jad反编译

这个命令是一个反编译的命令,能够把jar包反编译成代码展现在屏幕上,例如我的是test程序,那我就输出jad test

个别的程序的话,就须要装置上面的步骤来输出

jad  包名.类名

输出之后返回了几行货色,第一个红色字体下的是类加载器,第二个是门路,上面的就是源码和反编译的工夫了

4.watch监测

间接翻译就是监督,有点相似debug那种,能够看到这个类中函数的返回值,上面是规范应用的格局

$ watch 包名.类名 办法名 primeFactors returnObj

那我就须要改良一下,把我的程序改成函数调用的模式,当初我改成这样,成果是跟后面的是一样的

public class test {    public static void main(String[] args) {        int a = 1;        while (a==1){            System.out.println(outs(a));        }    }        public static int outs(int x){        return x;    }}

那我 测试这个outs办法,同样的因为我这个程序没有包名,所以包名能够省略,那我就输出

$ watch test outs primeFactors returnObj

能够看到每一次都会输入一个后果,这个后果就是咱们料想的 “1” ,同样的在结尾也是提醒咱们,按Q或者Ctrl+C能够退出

当然你也能够不写primeFactors ,间接输出$ watch test outs primeFactors returnObj,也是会输入数据,然而这个数据是会始终循环输入的,每执行一次就会输入一次,同样按Q或者Ctrl+C退出

5.退出Arthas

只是退出以后连贯的话,能够输出quit或者exit退出这个连贯,这样就能够更换监控的java程序了

比方我不监控test这个程序了,我要监控test1,那就输入quit或者exit退出这个连贯,而后再从新抉择test1进行监控。

我就再新建一个java程序test1如下,性能相似,也是死循环输入一个数

public class test1 {        public static void main(String[] args) {         int a = 2;               while (a==2){                       System.out.println(a);                }        }}

同时要放弃两个程序都没有进行

退出,而后就能够抉择监控另一个了。有时候会有呈现无奈连贯的状况,这是因为端口被刚刚的占用了还没开释,这里能够把test1的端口更换掉就行,后面有说怎么换端口的

很显然,这样的话,还是没有退出Arthas,只是退出了这次监控而已,那怎么退出呢,那就要间接应用stop命令对其进行敞开操作,间接整个对话就完结了


本次分享就先到这里了,前面还会分享更多对于Arthas的应用,敬请期待