上一篇                     
               
			  Linux快速查看JVM内存命令
- Linux
- 2025-06-14
- 2968
 使用
 
 
jstat -gc 实时监控堆内存各区域使用量,或通过
 jmap -heap 查看内存配置与使用摘要,需先获取Java进程ID(
 jps或
 ps),也可借助
 jcmd VM.native_memory分析Native内存。
在Linux系统中查看JVM内存状态是性能调优和故障排查的关键操作,以下是6种专业方法及其详细操作步骤,结合命令行工具和系统级监控,确保全面覆盖不同场景需求:
jstat 命令(实时内存监控)
 
适用场景:实时监控堆内存、GC活动,适合长期观察内存波动
操作步骤:
jstat -gc <pid> 1000 5 # 每1秒采样1次,共5次
输出关键指标解析:
- S0C/S1C:Survivor区容量 (KB)
- EC/OC:Eden区/老年代容量 (KB)
- MU:元数据区使用量 (Metaspace)
- YGC/YGCT:Young GC次数/耗时
- FGC/FGCT:Full GC次数/耗时
 优势:低开销,适合生产环境持续监控。
jcmd 命令(详细内存快照)
 
适用场景:获取JVM内部详细内存报告
操作步骤:

jcmd <pid> VM.native_memory summary # 查看Native Memory jcmd <pid> GC.heap_info # 输出堆内存分布
输出解读:
- Total reserved:JVM保留的总内存
- Committed:实际向系统申请的内存
- 按模块分类(Java Heap/Class/Thread/Code等)
 注意:需启动时添加-XX:NativeMemoryTracking=summary。
jmap 命令(堆内存直方图与Dump)
 
适用场景:分析对象分布或生成堆转储文件
基础命令:
jmap -heap <pid> # 堆内存配置摘要 jmap -histo:live <pid> # 存活对象统计(按类排序) jmap -dump:live,file=heap.hprof <pid> # 生成堆转储文件
关键输出:

- 对象数量及占用内存排名(排查内存泄漏)
- 堆配置参数(NewRatio/SurvivorRatio等)
 风险提示:jmap -dump可能暂停应用,生产环境慎用。
图形化工具(JConsole/VisualVM)
适用场景:直观分析内存趋势,适合开发环境
操作流程:
- 启动JVM时添加JMX参数: -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 
- 本地运行 jconsole或jvisualvm,连接远程进程
 功能亮点:
- 实时堆/非堆内存折线图
- 线程/类加载监控
- MBean操作支持
系统级内存检查(/proc 文件系统)
适用场景:验证JVM实际物理内存占用
操作命令:
cat /proc/<pid>/status | grep -E 'VmRSS|VmSize' # 物理内存(RSS) vs 虚拟内存(Size) cat /proc/<pid>/smaps | grep -i heap # 定位堆内存物理映射
指标说明:
- VmRSS:JVM实际使用的物理内存(含堆外)
- VmSize:JVM申请的虚拟内存总量
 优势:不依赖JDK工具,通用性强。
Arthas(在线诊断神器)
适用场景:动态诊断无需重启,支持内存泄漏分析
操作示例:

dashboard # 实时内存/线程面板 memory # 内存使用报告 heapdump /tmp/heap.hprof # 安全生成堆Dump
功能特色:
- 对象占用统计:sc -d *ClassName查看类加载器
- OQL表达式查询对象
 推荐:开源工具,支持生产环境热修复。
最佳实践建议
- 日常监控 → 首选 jstat+/proc组合(低开销)
- 内存泄漏分析 → jmap -histo或Arthas在线诊断
- 深度剖析 → 生成堆Dump用MAT(Eclipse Memory Analyzer)分析
- 容器环境:确保JDK工具包已安装(如 openjdk-11-tools)
引用说明:
本文方法参考Oracle官方文档《JDK Tools and Utilities》及Arthas开源项目文档,部分命令参数基于OpenJDK 11验证,系统级指标遵循Linux procfs规范。
 
  
			 
			 
			 
			 
			 
			 
			