版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434150
今天给大家简单介绍一下jvisualvm.exe监控工具。
相信很多人在开发过程中,基本不会去关心程序在jvm中运行的状况,一般写完接口测试数据没问题就过了。后面的事情就是测试和运维的工作了,也不会去管。
因为博主本身水平有限,所以这边只能给大家开个头(熟话说的好,师傅领进门,修行靠个人),好了我们开始今天内容了。
1.首先我们在java安装目录的bin下面,找到jvisualvm.exe,双击打开。
2.启动springboot服务,然后在jvisualvm中选择对应的服务进程,双击进入该进程,我们就可以看到该服务进程的运行情况了。 服务端接口代码:
@RestController
public class JVMTest {
private static volatile int count = 0;
@RequestMapping(value = "info", method = RequestMethod.GET)
public String info() {
count++;
long start = System.currentTimeMillis();
for (int i=0;i<100;i++){
JVMEntity jvmEntity =new JVMEntity();
jvmEntity.setName("我是内存测试");
System.out.println(jvmEntity.toString());
}
// objects = null;
long last = System.currentTimeMillis();
System.out.println(count+"执行时间:"+(last-start));
return "执行时间:"+(last-start);
}
}
3.接下来我们来进行接口并发测试,这边我用的是jmeter工具。这边我们模拟100个用户,间隔1s进行http请求。
4.http请求完毕后,我们切换回jvisualvm的监控页面,大家可以看到不管的cpu还是内存、线程数都有了明显的上升。
5.我们还可以查看,进程在运行过程中,类和该类创建对象的数据,对比不同时刻的对象数量,判断是否存在内存隐患。
这边我们可以看到基本都是springboot启动本身的一些类,没有明显的异常信息。
总结
我们期望我们的程序都可以好好运行,但是有时候往往事与愿违,这个时候我们就必须分析故障发生的原因在哪里。而JVM分析又是其中重中之重,所以掌握JVM排查方法是非常有必要的。