🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 介绍 获取虚拟机堆内存配置数据、Eden & Survivor & Old区内存使用量和比例、输出dump文件、获取class实例信息等,封装于`jmap` # 示例 ~~~java import beifengtz.vmconsole.JMapCmd; import beifengtz.vmconsole.entity.jmap.JMapForHeapResult; import java.io.InputStream; public class JMapTest { public static void main(String[] args) throws Exception{ // 保存全部对象信息的dump文件,保存成功返回true,失败false JMapCmd.dumpAll(8468, "test.bin"); // 只保存存活对象信息的dump文件,保存成功返回true,失败false JMapCmd.dumpLive(8468, "test.bin"); // 获取全部对象的class实例数据,从输出流中读取数据 InputStream histoAllIS = JMapCmd.histoAll(8468); // 只获取存活对象的class实例数据,从输出流中读取数据 InputStream histoLiveIS = JMapCmd.histoLive(8468); // 获取虚拟机heap信息,兼容jdk8之前提供的所有垃圾收集器,包括G1收集器 JMapForHeapResult jMapForHeapResult = JMapCmd.heapInfo(8468); System.out.println(jMapForHeapResult); } } ~~~ # 方法 | 名称 | 参数 | 返回值 | 含义 | | --- | --- | --- | --- | | dumpAll() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2.String filePath(保存的文件路径)| boolean| 输出jvm的heap内容到文件,保存成功返回true,失败返回false | | dumpLive() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2.String filePath(保存的文件路径)| boolean| 输出jvm的heap内容到文件,但只输出还存活的对象,保存成功返回true,失败返回false | | histoAll() | int vmId(虚拟机ID,JpsCmd可获取)| InputStream | 获取每个class的实例信息| | histoList() | int vmId(虚拟机ID,JpsCmd可获取)| InputStream | 获取每个class的实例信息,但只输出还存活的对象| | heapInfo() | int vmId(虚拟机ID,JpsCmd可获取)| JMapForHeapResult | 获取堆内存信息,包括Eden、Survivor From、Survivor To、Old区等 | # 结果对象 所有可能返回对象的继承关系结构 ```java |—— beifengtz.vmconsole.entity.JvmResult |—— beifengtz.vmconsole.entity.jmap.JMapForHeapResult |—— beifengtz.vmconsole.entity.jmap.JMapForHeapUsage |—— beifengtz.vmconsole.entity.jmap.HeapForSpace |—— beifengtz.vmconsole.entity.jmap.HeapForG1 |—— beifengtz.vmconsole.entity.jmap.HeapForGen ``` ## HeapForSpace | 属性 | 类型 | 含义 | | --- | --- | --- | | name | String | 堆区域名| | regions | String | 使用G1垃圾收集器时,表示所在区域 | | capacity | String | 该区域总容量 ,单位byte| | used | String | 已使用的大小 ,单位byte| | free | Sting | 空闲的大小,单位byte| | useRatio | String | 内存使用比例,百分数% | ## HeapForG1 | 属性 | 类型 | 含义 | | --- | --- | --- | | heap | HeapSpace | G1收集器的堆空间情况 | | eden | HeapSpace | G1收集器的Eden区空间情况 | | survivor | HeapSpace | G1收集器的Survivor区空间情况 | | old | HeapSpace | G1收集器的Old区空间情况 | ## HeapForGen | 属性 | 类型 | 含义 | | --- | --- | --- | | newGen | HeapSpace | 普通收集器的Eden 和 Survivor区空间情况 | | youngEden | HeapSpace | 普通收集器的Eden区空间情况 | | youngFrom | HeapSpace | 普通收集器的Survivor From区空间情况 | | youngTo | HeapSpace | 普通收集器的Survivor To区空间情况 | | oldGen | HeapSpace | 普通收集器的Old区空间情况 | ## JMapForHeapUsage | 属性 | 类型 | 含义 | | --- | --- | --- | | heapForGen| HeapForGen | 普通收集器的堆空间情况 | | heapForG1| HeapForG1 | G1收集器的堆空间情况 | ## JMapForHeapResult | 属性 | 类型 | 含义 | | --- | --- | --- | | heapConf| HashMap\<String\, Object\>| 堆空间配置信息 | | heapUsage| JMapForHeapUsage| 堆空间使用情况 |