1.jvm监控工具介绍

1.1.jconsole

  JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。

1.2.启动jconsole

  通过JDK/bin目录下的“jconsole.exe”启动Jconsole后,将自动搜索出本机运行的所有虚拟机进程,双击其中一个进程即可开始监控。

  也可以“远程连接服务器,进行远程虚拟机的监控。

  深入理解jvm--性能监控工具

  补充:根据端口号查看进程

  netstat -ano |findstr 8080
  解释:|findstr 8080 表示过滤出包括8080的数据,相当于关键字查找

1.2.1.概览页面

  进入监控界面后如下图

  深入理解jvm--性能监控工具

  概述页面显示的是整个虚拟机主要运行数据的概览。

1.2.2.内存监控

  深入理解jvm--性能监控工具

1.2.3线程监控

  此处的线程监控,可以方便的进行死锁检测,非常重要

  深入理解jvm--性能监控工具

1.2.4.类加载监控

  深入理解jvm--性能监控工具

1.2.5.jvm报表

   深入理解jvm--性能监控工具

1.3.jvisualvm

  提供了和jconsole的功能类似,提供了一大堆的插件。
  插件中,Visual GC(可视化GC)还是比较好用的,可视化GC可以看到内存的具体使用情况。

  启动方式,打开java安装目录,启动 bin/jvisualvm.exe 应用。

2.内存溢出实战模拟

  本节将以实际案例结合上面的jvm监控工具,深入的理解jvm!

2.1.案例一:内存溢出实战模拟

  测试代码:

 1 package com.wfd360.outofmemory;
 2 
 3 import java.util.ArrayList;
 4 
 5 /**
 6  * VM Args:
 7  * -Xms20m -Xmx20m
 8  */
 9 public class TestMemory {
10     static class OOMObject {
11         public byte[] byt = new byte[1 * 1024 * 1024];
12     }
13 
14     public static void main(String[] args) throws Exception {
15         Thread.sleep(10000);
16         fillHeap(100);
17         Thread.sleep(10000);
18     }
19 
20     public static void fillHeap(int num) throws Exception {
21         ArrayList<OOMObject> list = new ArrayList<OOMObject>();
22         for (int i = 0; i < num; i++) {
23             Thread.sleep(500);
24             list.add(new OOMObject());
25             System.out.println("num=" + i);
26         }
27         System.gc();
28     }
29 
30 
31 }
View Code

相关文章:

  • 2022-02-08
  • 2021-08-10
  • 2021-09-11
  • 2021-06-15
  • 2021-09-14
  • 2021-07-24
  • 2021-04-07
  • 2021-11-16
猜你喜欢
  • 2021-05-10
  • 2021-08-03
  • 2021-05-16
  • 2021-06-13
相关资源
相似解决方案