[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| 堆空间使用情况 |