企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] # 介绍 获取虚拟机内存状态信息,包括GC信息、编译类信息、元数据内存信息,封装于命令`jstat` # 示例 ~~~ import beifengtz.vmconsole.JStatCmd; import beifengtz.vmconsole.entity.jstat.JStatResultForGc; public class Test { public static void main(String[] args){ JStatResultForGc jStatResultForGc = JStatCmd.gc(8888); } } ~~~ # 方法 | 名称 | 参数 | 返回值 | 含义 | | --- | --- | --- | --- | | list() | 无 | JStatResult | 获取虚拟机信息列表,仅包含名字 | | snap() | int vmId(虚拟机ID,JpsCmd可获取) | JStatResult | 获取虚拟机信息及其值列表,包含名字和对应值| | clazz() | int vmId(虚拟机ID,JpsCmd可获取) | JStatResultForClass |获取虚拟机加载的类信息 | | clazz() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForClass \> | 批量获取虚拟机加载的类信息,在interval时间内获取count个 | | gc() | int vmId(虚拟机ID,JpsCmd可获取) | JStatResultForGc | 获取gc数据| | gc() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForGc\> | 批量获取虚拟机gc数据,在interval时间内获取count个 | | compiler() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForGcCapacity | 获取虚拟机编译信息 | | compiler() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForGcCapacity\> | 批量获取虚拟机编译信息,在interval时间内获取count个 | | gcCapacity() | int vmId(虚拟机ID,JpsCmd可获取) | JStatResultForGcCapacity | 获取虚拟机GC内存情况| | gcCapacity() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量) | ArrayList\<JStatResultForGcCapacity\>| 批量获取虚拟机GC内存情况,在interval时间内获取count个| | gcNew() | int vmId(虚拟机ID,JpsCmd可获取) | JStatResultForGcNew | 获取虚拟机新生代GC情况 | | gcNew() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量) | ArrayList\<JStatResultForGcNew\> | 批量获取虚拟机新生代GC情况 | | gcNewCapacity() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForGcNewCapacity | 获取虚拟机新生代GC内存情况 | | gcNewCapacity() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量) | ArrayList\<JStatResultForGcNewCapacity \>| 批量获取虚拟机新生代GC内存情况 | | gcOld() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForGcOld | 获取虚拟机老年代GC情况 | | gcOld() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForGcOld\> | 批量获取虚拟机老年代GC情况 | | gcOldCapacity() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForGcOldCapacity | 获取虚拟机老年代GC内存情况 | | gcOldCapacity() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForGcOldCapacity\> | 批量获取虚拟机老年代GC内存情况 | | gcMetaCapacity() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForGcMetaCapacity | 获取元数据空间内存情况 | | gcMetaCapacity() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForGcMetaCapacity \>| 批量获取元数据空间内存情况 | | gcUtil() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForGcUtil | 获取gc统计数据 | | gcUtil() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForGcUtil \>| 批量获取gc统计数据 | | printCompilation() | int vmId(虚拟机ID,JpsCmd可获取)| JStatResultForCompilation | 获取已经被JIT编译的方法 | | printCompilation() | 1. int vmId(虚拟机ID,JpsCmd可获取)<br/>2. long interval(命令执行时间)<br/>3. int count(在该执行时间内获取的数量)| ArrayList\<JStatResultForCompilation\>| 批量获取已经被JIT编译的方法 | | run() | String[] var0(命令参数) | ArrayList\<JStatResult\> | 自定义执行jstat命令 | # 结果对象 所有可能返回对象的继承关系结构 ```java |—— beifengtz.vmconsole.entity.JvmResult |—— beifengtz.vmconsole.entity.jstat.JStatResult |—— beifengtz.vmconsole.entity.jstat.JStatResultForClass |—— beifengtz.vmconsole.entity.jstat.JStatResultForCompilation |—— beifengtz.vmconsole.entity.jstat.JStatResultForCompiler |—— beifengtz.vmconsole.entity.jstat.JStatResultForGc |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcCapacity |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcMetaCapacity |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcNew |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcNewCapacity |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcOld |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcOldCapacity |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcUtil ``` ## JStatResult | 属性 | 类型 | 含义 | | --- | --- | --- | | names | ArrayList\<String\> | 虚拟机信息列表,仅包含名字 | | snapShot| ArrayList\<String\> | 虚拟机信息及其值列表,包含名字和对应值 | | ~~strResult~~ | String | 未经处理的 jstat命令执行结果,**不建议使用,后续版本将去掉** | ## JStatResult各子类属性含义 参数详细讲解看我的博客:[JVM虚拟机性能监控与故障处理工具](http://blog.beifengtz.com/article/52#directory051025813848240414) ~~~ S0C:s0(from)的大小 S1C:s1(from)的大小 S0U:s0(from)已使用的空间 S1U:s1(from)已经使用的空间 EC:eden区的大小 EU:eden区已经使用的空间 OC:老年代大小 OU:老年代已经使用的空间 MC:元空间的大小(Metaspace) MU:元空间已使用大小 CCSC:压缩类空间大小(compressed class space) CCSU:压缩类空间已使用大小 YGC:新生代gc次数 YGCT:新生代gc耗时 FGC:Full gc次数 FGCT:Full gc耗时 GCT:gc总耗时 e:Eden区使用比例 o:老年代使用比例 m:元数据区使用比例 css:压缩使用比例 Loaded:表示载入了类的数量 Bytes:所占用空间大小 Unloaded:表示卸载类的数量 UnBytes:卸载空间大小 Time:执行时间 Size:最近编译字节码的数量 Type:最近编译方法的编译类型 Method:方法名 Compiled:表示编译任务执行的次数 Failed:表示编译失败的次数 Invalid:不可用数量 FailedType:失败的类型 FailedMethod:失败的方法 ~~~