VisualVM可直接连接本地或配置JMX的远程Java进程实时监控内存与CPU:本地零配置自动发现进程,内存图显示堆使用/提交/最大三曲线及GC统计,CPU图显示整体占用率;远程需添加-Dcom.sun.management.jmxremote等参数并手动添加主机与端口。

直接启动 VisualVM 后连接目标 Java 进程,就能实时看到内存和 CPU 的动态图表——不需要额外编码或修改应用,前提是 JVM 是本地运行的,或者远程 JVM 已正确开启 JMX 支持。
启动并连接目标进程
进入 JDK 安装目录 bin 文件夹,双击 jvisualvm.exe(Windows)或运行 visualvm(Linux/macOS)。启动后左侧“应用程序”列表会自动显示本机所有正在运行的 Java 进程。点击对应进程即可加载监控视图。若需监控远程 JVM,必须提前在远程端添加 JMX 启动参数,例如:
- -Dcom.sun.management.jmxremote
- -Dcom.sun.management.jmxremote.port=9999
- -Dcom.sun.management.jmxremote.authenticate=false
- -Dcom.sun.management.jmxremote.ssl=false
然后在 VisualVM 中通过“文件 → 添加远程主机”输入 IP,再右键添加 JMX 连接。
查看实时内存使用情况
选中进程后,默认进入“监视”标签页。中间区域有三个核心图表:堆内存、类、线程。堆内存图会每秒刷新,显示已用堆(Used)、已提交(Committed)和最大堆(Max)三条曲线。下方还列出 GC 活动次数与耗时,包括 Young GC 和 Full GC。如果想进一步观察新生代/老年代细节,可安装插件 Visual GC(通过“工具 → 插件 → 可用插件”搜索安装),启用后会新增一个独立标签页,清晰展示 Eden、S0、S1、Old、Perm/Metaspace 的实时占用与 GC 触发点。
立即学习“Java免费学习笔记(深入)”;
查看实时 CPU 使用率
“监视”页顶部的 CPU 图表显示的是该 JVM 进程整体的 CPU 占用百分比(基于操作系统采样)。它反映的是 JVM 所在线程消耗的 CPU 时间总和。这个数值是实时滚动更新的,但不展开到具体方法。如需定位高 CPU 方法,要切换到“抽样器”标签页,点击“CPU”按钮开始采样,几秒后停止,即可看到按执行时间排序的方法调用树,明确哪个类、哪个方法占用了最多 CPU 资源。
补充说明
内存和 CPU 的实时图表都依赖 JVM 提供的运行时数据,无需应用做任何改动。但要注意:堆转储(Heap Dump)和线程转储(Thread Dump)仅对本地进程可用;远程连接只能做实时监控与采样,无法生成 dump 文件。另外,若操作系统分区为 FAT 格式,VisualVM 将无法读取部分 JVM 信息,建议使用 NTFS 或 ext4 等标准格式。


















