一、基本概述

  • visual vM是一个功能强大的多合一故障诊断和性能监控的可视化工具。
  • 它集成了多个JDK命令行工具,使用Visual VM可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)等,甚至代替JConsole。
  • 在JDK 6 Update 7以后,Visual VM便作为JDK的一部分发布(VisualVM 在JDK/bin目录下),即:它完全免费。
  • ·此外,Visual VM也可以作为独立的软件安装:

首页: https://visualvm.github.io/index.html
image.png

二、插件得安装

  • Visual VM的一大特点是支持插件扩展,并且插件安装非常方便。我们既可以通过离线下载插件文件*.nbm,然后在Plugin对话框的己下载页面下,添加己下载的插件。也可以在可用插件页面下,在线安装插件。(这里建议安装上:VisualGC)

插件地址: https://visualvm.github.io/pluginscenters.html
image.png
image.png

  • IDEA安装VisualVM Launcher插件

Preferences —> Plugins —>搜索VisualVM Launcher,安装重启即可。
① 在IDEA中安装插件:
image.png
设置好启动路径
image.png

三、连接方式

3.1、本地连接

监控本地Java进程的CPU、类、线程等

3.2、远程连接

1-确定远程服务器的ip地址
2-添加JMX(通过JMX技术具体监控远端服务器哪个Java进程
3-修改bin/catalina.sh文件,连接远程的tomcat
4-在…/conf中添加jmxremote.access和jmxremote.password文件
5-将服务器地址改为公网ip地址
6-设置阿里云安全策略和防火墙策略
7-启动tomcat,查看tomcat启动日志和端口监听
8-JMX中输入端口号、用户名、密码登录

四、主要功能

  1. 生成/读取堆内存快照
  2. 查看JVM参数和系统属性
  3. 查看运行中的虚拟机进程
  4. 生成/读取线程快照
  5. 程序资源的实时监控
  6. 其他功能
    1. JMX代理连接
    2. 远程环境监控
    3. CPU分析和内存分析

举例:

  1. package studies.jvm.jvisualVm;
  2. import java.util.ArrayList;
  3. import java.util.Random;
  4. /**
  5. * @Date: 2021/5/13
  6. * @Time: 12:17
  7. * @BelongsProject base
  8. * @BelongsPackage studies.jvm.jvisualVm
  9. * -Xms600m -Xmx600m -XX:SurvivorRatio=8
  10. */
  11. public class OOMTest {
  12. public static void main(String[] args) {
  13. ArrayList<Picture> list = new ArrayList<>();
  14. while (true){
  15. try {
  16. Thread.sleep(5);
  17. } catch (InterruptedException e) {
  18. e.printStackTrace();
  19. }
  20. list.add(new Picture(new Random().nextInt(100 * 50)));
  21. }
  22. }
  23. }
  24. class Picture{
  25. private byte[] pixels;
  26. public Picture(int length){
  27. this.pixels = new byte[length];
  28. }
  29. }

image.png

4.1、VisualVM生成堆dump文件

image.png