时间:2023-06-27 23:09:02 | 来源:网站运营
时间:2023-06-27 23:09:02 来源:网站运营
虚拟机系列:虚拟机图形化监控工具-VisualVM:工具
->插件
打开插件的安装页面,并选择自己需要的插件下载即可,如下-Djava.rmi.server.hostname=127.0.0.1 //远程服务器的IP(本地可访问)-Dcom.sun.management.imxremote -Dcom.sun.management.jmxremote.port=5555 // 远程服务器的端口(随便定一个,用于JMX管理该进程)-Dcom.sun.management.jmxremote.authenticate=false // 是否验证(true的话需要配置密码,自行百度吧)-Dcom.sun.management.jmxremote.ssl=false //ssl控制
如下两个相同的应用,一个是远程的连接,一个是本地的连接public class Test2 { public static void main(String[] args) throws InterruptedException { fullCpu(); } private static void fullCpu() throws InterruptedException { long startTime = 0; while (true) { startTime = System.currentTimeMillis(); while (System.currentTimeMillis() - startTime < 8) { } Thread.sleep(2); } }}
如下图Test2.fullCpu()方法占用了大量的CPU时间,而其他方法就比较空闲。通过这个tab,我们可以很快速方便的定位到应用中最耗资源的方法并解决。(而线程CPU时间,可以看到是根据CPU资源消耗大小对线程的排序)Trace Application
就会进入对应的操作面板,一个代码输入的控制页面。public class Test2 { public static int add(int a, int b) { return a + b; } public static void main(String[] args) throws InterruptedException { while (true){ int a = (int) Math.round(Math.random() * 100); int b = (int) Math.round(Math.random() * 100); add(a,b); Thread.sleep(2000); } }}
现在上面的代码已经在线上运行了,但是我现在需要知道a,b两个随机参数的具体值是什么,可以打开Btrace的代码界面,然后填充TracingScript即可,代码如下/* BTrace Script Template */import com.sun.btrace.annotations.*;import static com.sun.btrace.BTraceUtils.*;@BTracepublic class TracingScript { /* put your code here */@OnMethod(clazz="/.*Test2", // 监控以Test2结尾的类 method="add", location=@Location(Kind.RETURN)) public static void func(int a,int b, @Return int result){ println("开始==============="); jstack(); println(strcat("方法参数A:",str(a))); println(strcat("方法参数B:",str(b))); println(strcat("方法结果:",str(result))); }}
@OnMethod中参数的clazz需要控制的类,method是类中的方法,location中的Kind.RETURN是指方法结束后输出信息以及堆栈信息。想深入了解这三种参数的具体使用方法请自行百度:“Btrace Java”然后点击Start按钮就会开始执行,看到控制台输出的信息,如图
监控指定函数的耗时
,获取任意行代码信息
,脚本定时
,获取类的属性
等。我是阿纪,用输出倒逼输入而持续学习,持续分享技术系列文章,以及全网值得收藏好文,欢迎主页关注公众号,做一个持续成长的技术人。 除了Java虚拟机相关的系列内容 还有MySQL高级相关更多内容,如锁,MVCC,读写分离,分库分表等还在持续更新中,如果有想了解的内容也可以给我留言,欢迎关注催更。
所有内容首发于个人网站:纪先生进阶指南
关键词:虚拟,工具,系列,图形