jvisualvm.exe使用介绍

今天给大家简单介绍一下jvisualvm.exe监控工具。
image

相信很多人在开发过程中,基本不会去关心程序在jvm中运行的状况,一般写完接口测试数据没问题就过了。后面的事情就是测试和运维的工作了,也不会去管。
image

因为博主本身水平有限,所以这边只能给大家开个头(熟话说的好,师傅领进门,修行靠个人),好了我们开始今天内容了。

1.首先我们在java安装目录的bin下面,找到jvisualvm.exe,双击打开。
image

2.启动springboot服务,然后在jvisualvm中选择对应的服务进程,双击进入该进程,我们就可以看到该服务进程的运行情况了。
服务端接口代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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);
}
}

image

3.接下来我们来进行接口并发测试,这边我用的是jmeter工具。这边我们模拟100个用户,间隔1s进行http请求。
image

4.http请求完毕后,我们切换回jvisualvm的监控页面,大家可以看到不管的cpu还是内存、线程数都有了明显的上升。
image

5.我们还可以查看,进程在运行过程中,类和该类创建对象的数据,对比不同时刻的对象数量,判断是否存在内存隐患。
image
image
这边我们可以看到基本都是springboot启动本身的一些类,没有明显的异常信息。

总结

我们期望我们的程序都可以好好运行,但是有时候往往事与愿违,这个时候我们就必须分析故障发生的原因在哪里。而JVM分析又是其中重中之重,所以掌握JVM排查方法是非常有必要的。

更多内容敬请关注:“林老师带你学编程”

林老师带你学编程 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!