一、基本概述
- 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
二、插件得安装
- Visual VM的一大特点是支持插件扩展,并且插件安装非常方便。我们既可以通过离线下载插件文件*.nbm,然后在Plugin对话框的己下载页面下,添加己下载的插件。也可以在可用插件页面下,在线安装插件。(这里建议安装上:VisualGC)
插件地址: https://visualvm.github.io/pluginscenters.html

- IDEA安装VisualVM Launcher插件
Preferences —> Plugins —>搜索VisualVM Launcher,安装重启即可。
① 在IDEA中安装插件: 
设置好启动路径
三、连接方式
3.1、本地连接
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中输入端口号、用户名、密码登录
四、主要功能
- 生成/读取堆内存快照
- 查看JVM参数和系统属性
- 查看运行中的虚拟机进程
- 生成/读取线程快照
- 程序资源的实时监控
- 其他功能
- JMX代理连接
- 远程环境监控
- CPU分析和内存分析
举例:
package studies.jvm.jvisualVm;import java.util.ArrayList;import java.util.Random;/*** @Date: 2021/5/13* @Time: 12:17* @BelongsProject base* @BelongsPackage studies.jvm.jvisualVm* -Xms600m -Xmx600m -XX:SurvivorRatio=8*/public class OOMTest {public static void main(String[] args) {ArrayList<Picture> list = new ArrayList<>();while (true){try {Thread.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}list.add(new Picture(new Random().nextInt(100 * 50)));}}}class Picture{private byte[] pixels;public Picture(int length){this.pixels = new byte[length];}}
4.1、VisualVM生成堆dump文件

