首页 > 编程知识 正文

jvisualvm远程监控,jvisualvm怎么读

时间:2023-05-04 07:28:24 阅读:48047 作者:4775

jvisualvm是官方推荐的最强大的运行监视和故障处理程序,值得java程序员熟悉它以分析自己的程序。

在启动和设置命令行上运行jvisualvm将启动jvisualvm工具。 但是,当前默认插件中心地址不可用,必须在“工具”-“插件”-“设置”中重新设置插件中心地址。

插件中心地址可以在https://visual VM.github.io/plugins centers.html页面上,根据用户安装的jdk版本找到相应的插件地址

笔者使用的jdk版本为jdk1.8.0_111,因此使用的插件中心地址为https://visual VM.github.io/archive/UC/8u 40/updates.html

效能分析工具效能VisualVM提供程式执行中方法层级的CPU执行时间分析和记忆体分析。 进行效能分析工具分析无疑会对程序的运行性能产生重大影响。

package com.gsonkeno.JVM training.jconsole; importorg.spring framework.web.bind.annotation.request mapping; importorg.spring帧web.bind.annotation.rest controller; import java.util.HashMap; import java.util.Map;/* *分析用于测试jvisualvm性能分析工具功能的cpu或内存,但在“校准”时保持超时*/@ restcontrollerpublicclassjvisualvmcontroller jvisualvm ' )无法实际测试公共映射jvisualvm ()的映射图=new hashmap (; map.put('name ',' gs ' ); map.put(age,) 25 ); 返回图; }请求此rest风格的服务时,在随机时间内返回(1s以内),从浏览器多次请求访问,得到的CPU分析如下图:所示

笔者在测试中使用了springboot框架,从图中可以推测springboot嵌入的tomcat的默认最小线程数为10个,方法执行的平均时间为500ms左右。

笔者在测试时,通过写测试用例并同时访问服务,发现线程数也在上升。 侧面支持tomcat的连接池的默认线程数为10,随着并发访问的增加,将逐渐创建新线程来处理用户连接。 因为这是线程池使用的缩影,所以这里不详细说明。

BTrace插件通过HotSpot虚拟机的HotSwap技术,在不停止目标程序运行的情况下动态添加本来不存在的调试代码。

实际业务代码package com.gsonkeno.JVM training.btrace; import java.io.BufferedReader; import java.io.IOException; import Java.io.input streamreader; publicclassbtracetest { public int add (inta,int b ) { return a b; } publicstaticvoidmain (字符串[ ] args ) throwsioexception (btracetesttest=newbtracetest ); bufferedreaderbr=newbufferedreader (newinputstreamreader ) system.in ); for(intI=0; i 10; I () { br.readLine ); inta=(int ) math.round ) math.random ) * 1000 ); intb=(int ) math.round ) math.random ) * 1000 ); system.out.println(test.add ) a,b ); }}调试代码package com.gsonkeno.JVM training.btrace; import com.sun.btrace.annotations.*; importstaticcom.sun.btrace.btraceutils.*; /**调试脚本*/@ btracepublicclasstracingscript { @ on method (clazz=' com.gsonkeno.JVM training.btrace.btrac etest ' location=@ lon ) om.gsonkeno.JVM training.btrace.btracetestinstance jstack (; println (方法参数A: )、str(a ); println (方法参数B: )、str (b ); println(strcat (方法结果: )、str (结果) ); //最终打印在“jvisualvm工具”面板的Btrace栏中的内容包括://调用堆栈3360//com.gsonkeno.JVM training.btrace.btrac etest.com.gsonkeno.JVM training.btrace.btrac etest.main (unknown source ) /方法参数A:754//方法参数B:584//方法参数方法结果com.gsonkeno.JVM training.btrace.btrac etest.add (btrac etest.Java :9 )/com.gsonkeno.JVM training.btravm

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。