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端口。

posted @ 2025-11-13 15:37  筱倩  阅读(2)  评论(0)    收藏  举报