VisualIVM-内存泄露监测工具使用
VisualVM 是 Java 官方自带的、功能强大且免费的 JVM 监控分析工具,非常适合开发阶段做性能调优和故障排查。
一、简介
VisualVM 是一款图形化工具,可以实时监控 Java 程序的运行状态,分析 CPU 使用率、内存占用、线程活动情况、类加载信息等,甚至可以抓取堆快照(Heap Dump)分析内存泄漏。
-
VisualVM 集成在 JDK 中(JDK8自带,bin目录下有
jvisualvm.exe)。 -
支持本地和远程进程监控。
-
支持实时查看,也支持保存快照后离线分析。

二、主要界面功能
连接到一个 Java 进程(比如 IntelliJ IDEA 本身,或者你自己的应用程序)后,可以看到以下模块:

(1)概述
显示应用程序和运行时环境的基本信息。
-
JVM版本
-
启动参数
-
应用启动时间
-
线程数量、堆大小等概览信息

(2)监视
实时展示应用程序整体运行情况,包括:
-
CPU:CPU使用率变化曲线。
-
内存(Heap):堆内存使用情况。
-
堆(Heap):堆内存分配情况,点击
Perform GC可以手动触发一次垃圾回收。 -
元空间(Metaspace):类元数据占用情况。
-
类(Classes):加载了多少类,卸载了多少类。
-
线程(Threads):当前活动线程数量。
同时可以手动触发 堆 Dump,用于分析内存情况。

点击堆dump后:

(3)线程
查看当前应用中的所有线程及其状态,包括:
-
活动线程总数
-
守护线程数量
-
每个线程的状态(RUNNABLE、WAITING、BLOCKED 等)
-
可以执行线程Dump,抓取当前所有线程的堆栈信息,排查死锁、线程阻塞等问题。


(4)抽样器
抽样监控,分为:
- CPU采样
查看各个方法的调用时间占比,找到性能热点方法。
-
哪个方法耗时最长?
-
哪段代码是瓶颈?
- 内存采样
实时查看各类对象的实例数量和内存占用。
-
哪种对象实例最多?
-
哪种对象占内存最多?
适合快速发现内存泄漏风险。



(5)堆转储(Heap Dump)
执行 Heap Dump,可以:
-
生成当前JVM堆内存快照。
-
分析对象数量、内存占用。
-
查找内存泄漏(比如发现有大量对象长期不释放)。
-
可以根据 Retained Size 找到占内存最大的对象。
在平时开发阶段,可以随手用 VisualVM 连接自己的程序,提前发现性能隐患。线上环境则推荐结合 Prometheus + Grafana 做系统性指标监控。 VisualVM也可以远程连接服务器上的JVM,只需开启JMX端口。
浙公网安备 33010602011771号