jvisualvm工具

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

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

  1.  
    @RestController
  2.  
    public class JVMTest {
  3.  
    private static volatile int count = 0;
  4.  
    @RequestMapping(value = "info", method = RequestMethod.GET)
  5.  
    public String info() {
  6.  
    count++;
  7.  
    long start = System.currentTimeMillis();
  8.  
    for (int i=0;i<100;i++){
  9.  
    JVMEntity jvmEntity =new JVMEntity();
  10.  
    jvmEntity.setName("我是内存测试");
  11.  
    System.out.println(jvmEntity.toString());
  12.  
    }
  13.  
    // objects = null;
  14.  
    long last = System.currentTimeMillis();
  15.  
    System.out.println(count+"执行时间:"+(last-start));
  16.  
    return "执行时间:"+(last-start);
  17.  
    }
  18.  
    }

image

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

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

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

总结

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

posted @ 2021-01-26 17:05  小云吞爸爸  阅读(85)  评论(0)    收藏  举报