{"id":28549642,"url":"https://github.com/tzfun/vmconsole-api","last_synced_at":"2025-07-06T09:30:35.940Z","repository":{"id":45208884,"uuid":"188955946","full_name":"tzfun/VmConsole-Api","owner":"tzfun","description":"🔨一个jvm虚拟机性能监控api，将oracle jdk提供的tools.jar包进行了功能拓展，对一些监控命令结果进行了封装，你可以方便地从对象中读取每一个参数和结果。该类库并不是简单地使用运行时exec()调用jps、jstat、jstack等命令，而是从底层深度拓展而来，所以你不需要配置java环境变量就可以通过Java代码对虚拟机进行监控。","archived":false,"fork":false,"pushed_at":"2023-04-07T14:04:15.000Z","size":2141,"stargazers_count":45,"open_issues_count":2,"forks_count":17,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-10T02:11:50.160Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tzfun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-05-28T04:50:22.000Z","updated_at":"2025-05-14T19:34:29.000Z","dependencies_parsed_at":"2022-08-25T11:01:47.059Z","dependency_job_id":"27238936-6a91-45ce-a7d8-9219274f6c71","html_url":"https://github.com/tzfun/VmConsole-Api","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tzfun/VmConsole-Api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzfun%2FVmConsole-Api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzfun%2FVmConsole-Api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzfun%2FVmConsole-Api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzfun%2FVmConsole-Api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tzfun","download_url":"https://codeload.github.com/tzfun/VmConsole-Api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tzfun%2FVmConsole-Api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263877689,"owners_count":23523816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T02:11:49.265Z","updated_at":"2025-07-06T09:30:35.934Z","avatar_url":"https://github.com/tzfun.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=center\u003e\n\u003cimg src=http://vr360-beifengtz.oss-cn-beijing.aliyuncs.com/beifengtz/VMConsole.png width=200/\u003e\n\u003c/div\u003e\n\n# VmConsole-Api\n🔨VmConsole-Api是一个jvm虚拟机性能监控API，将oracle jdk提供的tools.jar包进行了功能拓展，对一些监控命令结果进行了封装，你可以方便地从对象中读取每一个参数和结果。该类库并不是简单地使用运行时exec()调用jps、jstat、jstack等命令，而是从底层深度拓展而来，所以你不需要配置java环境变量就可以通过Java代码对虚拟机进行监控。\n\n**说明**：本工具API适用于jdk8及以上（jdk7以下部分功能可能会出错），虚拟机必须是**HotSpot**。\n\n**本项目遵守Apache开源协议，核心代码由本人根据jdk源码拓展或改造而来，无模仿或抄袭。**\n\n# 如何使用\n我已将核心依赖库打包生成了一个jar包(3MB左右)，你只需要将jar包导入到项目就可以直接使用其中的类，无需导入任何其他包。\n\n* **jar包下载**\n\n  提供两种下载方式，任选其一即可\n    * github下载：[https://github.com/tzfun/VmConsole-Api/releases](https://github.com/tzfun/VmConsole-Api/releases)\n    * 百度云盘下载：链接：[https://pan.baidu.com/s/15ptIBoJJqSJghxCewOyEGg](https://pan.baidu.com/s/15ptIBoJJqSJghxCewOyEGg) 提取码：nuia \n\n* **Maven依赖**\n\n在pom.xml中引入如下依赖(以下是最新版本)：\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.tzfun\u003c/groupId\u003e\n  \u003cartifactId\u003evmconsole\u003c/artifactId\u003e\n  \u003cversion\u003e1.1.0\u003c/version\u003e\n  \u003cclassifier\u003ejar-with-dependencies\u003c/classifier\u003e\n\u003c/dependency\u003e\n```\n\n使用示例：\n```java\nimport beifengtz.vmconsole.JpsCmd;\nimport beifengtz.vmconsole.entity.jps.JpsResult;\n\nimport java.util.List;\n\npublic class JpsTest {\n    public static void main(String[] args) throws Exception{\n        //  获取本地虚拟机所有虚拟机进程id\n        List\u003cJpsResult\u003e jpsResult1 = JpsCmd.quit();\n        //  获取本地虚拟机所有虚拟机进程id，同时获取虚拟机参数\n        List\u003cJpsResult\u003e jpsResult2 = JpsCmd.withVmArgs();\n        //  获取本地虚拟机所有虚拟机进程id，同时获取主类参数\n        List\u003cJpsResult\u003e jpsResult3 = JpsCmd.withMainClassArgs();\n        //  获取本地虚拟机所有虚拟机进程id，同时获取jar或者主类全称\n        List\u003cJpsResult\u003e jpsResult4 = JpsCmd.withFullName();\n\n        //  自定义执行jps命令的参数，此处相当于在命令行执行jps -l\n        List\u003cJpsResult\u003e jpsResult4 = JpsCmd.run(new String[](\"-l\"));\n    }\n}\n```\n\n* 使用说明(建议查看此文档)\n    * [https://www.kancloud.cn/beifengtz/vmconsole/1118492](https://www.kancloud.cn/beifengtz/vmconsole/1118492)\n    \n* API文档\n    * [doc.vmconsole.beifengtz.com](http://doc.vmconsole.beifengtz.com)\n# 交流\n\n如果你在使用中发现了Bug，或者想对本作品提出意见或建议，请发送邮件到作者本人邮箱：[beifengtz@163.com](mailto:beifengtz@163.com)\n\n# 关于作者\n\n* 个人首页：[www.beifengtz.com](http://www.beifengtz.com)\n* 博客地址：[blog.beifengtz.com](http://blog.beifengtz.com)\n* GitHub：[https://github.com/tzfun](https://github.com/tzfun)\n* 个人微信公众号：**北风IT之路**\n\n\u003cimg src=https://vr360-beifengtz.oss-cn-beijing.aliyuncs.com/beifengtz/%E5%85%AC%E4%BC%97%E5%8F%B7.png width=200/\u003e\n\n# VmConsole详细介绍文档\n\n目前为止，我已经封装了jps、jstat、jstack、jinfo、jcmd、jamp六个命令，使用者可以直接通过每个工具类的run方法直接执行相关命令（主需要传入参数，不需要传入jps、jstat等命令），命令格式和jdk提供的工具命令格式一模一样，也可以使用我已经封装好了的方法，不过为了方便以及可靠性保证，建议你使用已经封装好的方法。\n\n* `JpsCmd`：获取本地虚拟机实例的ID、主类信息、虚拟机参数等，封装于命令`jps`\n* `JInfoCmd`：获取和设置系统参数信息、虚拟机参数信息，封装于命令`jinfo`\n* `JStatCmd`：获取虚拟机内存状态信息，包括GC信息、编译类信息、元数据内存信息，封装于命令`jstat`\n* `JStackCmd`：获取虚拟机堆栈信息，包括线程堆栈、dump文件、c/c++方法堆栈等，封装于命令`jstack`\n* `JMapCmd`：获取虚拟机堆内存配置数据、Eden \u0026 Survivor \u0026 Old区内存使用量和比例、输出dump文件、获取class实例信息等，封装于`jmap`\n* `JCmd`：向某一个虚拟机示例执行命令，封装于`jcmd`\n\n## 1.JPSCmd\n\nJpsCmd类可以获取本地虚拟机实例的虚拟机唯一识别VMID、虚拟机参数、主类参数和jar全称等。对应原生jdk命令`jps`。\n\n### 1.1方法\n| 名称 | 参数 | 返回值 |  含义  |\n| --- | --- | --- | --- |\n| quit()  |   无  | List\\\u003cJpsResult\\\u003e | 仅获取本地所有虚拟机实例的vmId |\n| withMainClassArgs()  |   无  | List\\\u003cJpsResult\\\u003e | 获取本地所有虚拟机实例的vmId和main函数的参数 |\n|withVmArgs()  |   无  | List\\\u003cJpsResult\\\u003e | 获取本地所有虚拟机实例的vmId和虚拟机参数 |\n| withFullName()  |   无  | List\\\u003cJpsResult\\\u003e | 获取本地所有虚拟机实例的vmId和主类或jar全名 |\n| run()  |  String[] var0 （命令参数） | List\\\u003cJpsResult\\\u003e | 自定义参数执行jps命令，建议使用上面的方法 |\n\n### 1.2结果对象\n所有可能返回对象的继承关系结构\n```\n|—— beifengtz.vmconsole.entity.JvmResult\n    |—— beifengtz.vmconsole.entity.jps.JpsResult\n```\nJvmResult的内容介绍请见开始使用。\n#### 1.2.1 JpsResult\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n|   mianClass | String  |   虚拟机主类信息  |\n|   mainArgs |  String  |   虚拟机主类参数  |\n|   vmArgs |  String  |   虚拟机参数  |\n|   vmFlags |  String  |   虚拟机标志数据  |\n| errMessage | String | jps命令错误信息 |\n| ~~strResult~~ | String | 未经处理的 jps命令执行结果，**不建议使用，后续版本将去掉**  |\n\n## 2.JInfo\n\n获取以及设置系统参数、虚拟机参数等信息。封装自命令：`jinfo`。\n\n### 2.1 方法\n| 名称 | 参数 | 返回值 |  含义  |\n| --- | --- | --- | --- |\n| queryFlagsAndSysInfo() |  int vmId （虚拟机ID，JpsCmd可获取） | JInfoResult | 查询虚拟机flag信息和系统参数信息|\n| queryFlags() | int vmId（虚拟机ID，JpsCmd可获取） | JInfoResult | 查询虚拟机flag信息|\n| querySysInfo() |  int vmId （虚拟机ID，JpsCmd可获取） | JInfoResult | 查询系统参数信息|\n| queryFlag() | 1. int vmId\u003cbr/\u003e 2. String flagName（标志名称）| JInfoResult | 查询某一个Flag的值|\n| addFlag() | 1. int vmId\u003cbr/\u003e 2. String flagName（标志名称）| JInfoResult | 新增一个Flag|\n| removeFlag() | 1. int vmId\u003cbr/\u003e 2. String flagName（标志名称）| JInfoResult | 移除一个Flag|\n| setFlag() | 1. int vmId\u003cbr/\u003e 2. String flagName（标志名称）\u003cbr/\u003e  3. String value（标志的值）| JInfoResult | 为一个Flag设置值|\n| run() | String[] var0（命令参数）| JInfoResult | 自定义执行jinfo命令，不过建议你使用上面的方法|\n### 2.2 结果对象\n所有可能返回对象的继承关系结构\n```\n|—— beifengtz.vmconsole.entity.JvmResult\n    |—— beifengtz.vmconsole.entity.jinfo.JInfoResult\n\n|—— beifengtz.vmconsole.entity.jinfo.JInfoNode\n    |—— beifengtz.vmconsole.entity.jinfo.JInfoFlag\n```\n#### 2.2.1 JInfoNode / JInfoFlag\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| option | String | 选项/flag名 |\n| value | String | 选项/flag的值 |\n\n#### 2.2.2 JInfoResult\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| infoList | List\\\u003cJInfoNode\\\u003e | 系统信息列表 |\n| flags | List\\\u003cJInfoFlag\\\u003e | 虚拟机标志信息列表 |\n| commandLine | String | 命令行 |\n| commandType | String | 命令类型 |\n| setSuccess | boolean | 用于判断写操作是否成功，仅当执行命令为**写**操作该属性才有用 |\n\n## 3.JStatCmd\n\n获取虚拟机内存状态信息，包括GC信息、编译类信息、元数据内存信息，封装于命令`jstat`\n\n### 3.1 方法\n| 名称 | 参数 | 返回值 | 含义 |\n| --- | --- | --- | --- |\n| list() | 无 | JStatResult | 获取虚拟机信息列表，仅包含名字 |\n| snap() | int vmId（虚拟机ID，JpsCmd可获取） | JStatResult | 获取虚拟机信息及其值列表，包含名字和对应值|\n| clazz() | int vmId（虚拟机ID，JpsCmd可获取） | JStatResultForClass |获取虚拟机加载的类信息 |\n| clazz() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForClass \\\u003e | 批量获取虚拟机加载的类信息，在interval时间内获取count个 |\n| gc() | int vmId（虚拟机ID，JpsCmd可获取） | JStatResultForGc | 获取gc数据|\n| gc() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForGc\\\u003e | 批量获取虚拟机gc数据，在interval时间内获取count个 |\n| compiler() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForGcCapacity  | 获取虚拟机编译信息 |\n| compiler() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForGcCapacity\\\u003e | 批量获取虚拟机编译信息，在interval时间内获取count个 |\n| gcCapacity() | int vmId（虚拟机ID，JpsCmd可获取） | JStatResultForGcCapacity  | 获取虚拟机GC内存情况|\n| gcCapacity() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量） | ArrayList\\\u003cJStatResultForGcCapacity\\\u003e| 批量获取虚拟机GC内存情况，在interval时间内获取count个|\n| gcNew() | int vmId（虚拟机ID，JpsCmd可获取） | JStatResultForGcNew | 获取虚拟机新生代GC情况 |\n| gcNew() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量） | ArrayList\\\u003cJStatResultForGcNew\\\u003e | 批量获取虚拟机新生代GC情况 |\n| gcNewCapacity() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForGcNewCapacity | 获取虚拟机新生代GC内存情况 |\n| gcNewCapacity() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量） | ArrayList\\\u003cJStatResultForGcNewCapacity \\\u003e| 批量获取虚拟机新生代GC内存情况 |\n| gcOld() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForGcOld | 获取虚拟机老年代GC情况 |\n| gcOld() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForGcOld\\\u003e | 批量获取虚拟机老年代GC情况 |\n| gcOldCapacity() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForGcOldCapacity | 获取虚拟机老年代GC内存情况 |\n| gcOldCapacity() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForGcOldCapacity\\\u003e | 批量获取虚拟机老年代GC内存情况 |\n| gcMetaCapacity() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForGcMetaCapacity | 获取元数据空间内存情况 |\n| gcMetaCapacity() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForGcMetaCapacity \\\u003e| 批量获取元数据空间内存情况 |\n| gcUtil() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForGcUtil | 获取gc统计数据 |\n| gcUtil() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForGcUtil \\\u003e| 批量获取gc统计数据 |\n| printCompilation() | int vmId（虚拟机ID，JpsCmd可获取）| JStatResultForCompilation | 获取已经被JIT编译的方法 |\n| printCompilation() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. long interval（命令执行时间）\u003cbr/\u003e3. int count（在该执行时间内获取的数量）| ArrayList\\\u003cJStatResultForCompilation\\\u003e| 批量获取已经被JIT编译的方法 |\n| run() | String[] var0（命令参数） | ArrayList\\\u003cJStatResult\\\u003e | 自定义执行jstat命令 |  \n### 3.2 结果对象\n所有可能返回对象的继承关系结构\n```\n|—— beifengtz.vmconsole.entity.JvmResult\n    |—— beifengtz.vmconsole.entity.jstat.JStatResult\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForClass\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForCompilation\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForCompiler\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGc\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcCapacity\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcMetaCapacity\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcNew\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcNewCapacity\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcOld\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcOldCapacity\n        |—— beifengtz.vmconsole.entity.jstat.JStatResultForGcUtil\n```\n#### 3.2.1 JStatResult\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| names | ArrayList\\\u003cString\\\u003e | 虚拟机信息列表，仅包含名字 |\n| snapShot| ArrayList\\\u003cString\\\u003e | 虚拟机信息及其值列表，包含名字和对应值 |\n| ~~strResult~~ | String | 未经处理的 jstat命令执行结果，**不建议使用，后续版本将去掉** |\n#### 3.2.2 JStatResult各子类属性含义\n参数详细讲解看我的博客：[JVM虚拟机性能监控与故障处理工具](http://blog.beifengtz.com/article/52#directory051025813848240414)\n~~~\nS0C：s0（from）的大小\nS1C：s1（from）的大小\nS0U：s0（from）已使用的空间\nS1U：s1(from)已经使用的空间\nEC：eden区的大小\nEU：eden区已经使用的空间\nOC：老年代大小\nOU：老年代已经使用的空间\nMC：元空间的大小（Metaspace）\nMU：元空间已使用大小\nCCSC：压缩类空间大小（compressed class space）\nCCSU：压缩类空间已使用大小\nYGC：新生代gc次数\nYGCT：新生代gc耗时\nFGC：Full gc次数\nFGCT：Full gc耗时\nGCT：gc总耗时\ne：Eden区使用比例\no：老年代使用比例\nm：元数据区使用比例\ncss：压缩使用比例\nLoaded：表示载入了类的数量\nBytes：所占用空间大小\nUnloaded：表示卸载类的数量\nUnBytes：卸载空间大小\nTime：执行时间\nSize：最近编译字节码的数量\nType：最近编译方法的编译类型\nMethod：方法名\nCompiled：表示编译任务执行的次数\nFailed：表示编译失败的次数\nInvalid：不可用数量\nFailedType：失败的类型\nFailedMethod：失败的方法\n~~~\n\n## 4.JStackCmd\n\n获取虚拟机堆栈信息，包括线程堆栈、dump文件、c/c++方法堆栈等，封装于命令`jstack`\n\n### 4.1 方法\n| 名称 | 参数 | 返回值 | 含义 |\n| --- | --- | --- | --- |\n| threadStack() | int vmId（虚拟机ID，JpsCmd可获取）| JStackResult | 除堆栈外，获取关于锁的附加信息 | \n| jniStack() | int vmId（虚拟机ID，JpsCmd可获取）| JStackResult | 如果调用到本地方法的话，可以获取C/C++的堆栈 | \n| threadDump() | int vmId（虚拟机ID，JpsCmd可获取）| JStackResult | 除堆栈外，获取关于锁、dump文件的附加信息 | \n| run() | String[] var0（命令参数） | JStackResult  | 自定义执行jstack命令 |  \n### 4.2 结果对象\n所有可能返回对象的继承关系结构\n```java\n|—— beifengtz.vmconsole.entity.JvmResult\n    |—— beifengtz.vmconsole.entity.jstack.JStackResult\n    |—— beifengtz.vmconsole.entity.jstack.ThreadStack\n```\n#### 4.2.1 ThreadStack\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| id | String  | 线程id|\n| state | String | 线程状态 | \n| stacks | StringBuilder | 线程堆栈信息 |\n|deadLocks | String | 线程死锁信息|\n|~~currentJavaSP~~ | String | 当前线程全限名地址 |\n| concurrentLocks | String | 并发锁信息|\n####  4.2.2 JStackResult\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n|  deadLocks | String |  虚拟机死锁信息 | \n| concurrentLocks | String | 虚拟机并发锁信息 |\n| threadStacks | List\\\u003cThreadStacks\\\u003e | 线程栈信息列表 |\n| jniStack | ArrayList\\\u003cStringBuilder\\\u003e | Java及C/C++方法的堆栈信息 |\n| threadDump | String | 锁、dump文件的附加信息 |\n\n## 5.JMapCmd\n\n获取虚拟机堆内存配置数据、Eden \u0026 Survivor \u0026 Old区内存使用量和比例、输出dump文件、获取class实例信息等，封装于`jmap`\n\n### 5.1 方法\n| 名称 | 参数 | 返回值 | 含义 |\n| --- | --- | --- | --- |\n| dumpAll() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2.String filePath（保存的文件路径）| boolean| 输出jvm的heap内容到文件，保存成功返回true，失败返回false |\n| dumpLive() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2.String filePath（保存的文件路径）| boolean| 输出jvm的heap内容到文件，但只输出还存活的对象，保存成功返回true，失败返回false |\n| histoAll() | int vmId（虚拟机ID，JpsCmd可获取）| InputStream | 获取每个class的实例信息|\n| histoList() | int vmId（虚拟机ID，JpsCmd可获取）| InputStream | 获取每个class的实例信息，但只输出还存活的对象|\n| heapInfo() | int vmId（虚拟机ID，JpsCmd可获取）| JMapForHeapResult | 获取堆内存信息，包括Eden、Survivor From、Survivor To、Old区等 |\n### 5.2 结果对象\n所有可能返回对象的继承关系结构\n```\n|—— beifengtz.vmconsole.entity.JvmResult\n    |—— beifengtz.vmconsole.entity.jmap.JMapForHeapResult \n\n|—— beifengtz.vmconsole.entity.jmap.JMapForHeapUsage\n|—— beifengtz.vmconsole.entity.jmap.HeapForSpace\n|—— beifengtz.vmconsole.entity.jmap.HeapForG1\n|—— beifengtz.vmconsole.entity.jmap.HeapForGen\n```\n#### 5.2.1 HeapForSpace\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| name | String | 堆区域名|\n| regions | String | 使用G1垃圾收集器时，表示所在区域 |\n| capacity | String | 该区域总容量 ，单位byte|\n| used | String | 已使用的大小 ，单位byte|\n| free | Sting | 空闲的大小，单位byte|\n| useRatio | String | 内存使用比例，百分数% |\n\n#### 5.2.2 HeapForG1\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| heap | HeapSpace | G1收集器的堆空间情况 |\n| eden | HeapSpace | G1收集器的Eden区空间情况 |\n| survivor | HeapSpace | G1收集器的Survivor区空间情况 |\n| old | HeapSpace | G1收集器的Old区空间情况 |\n\n#### 5.2.3 HeapForGen\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| newGen | HeapSpace | 普通收集器的Eden 和 Survivor区空间情况 |\n| youngEden | HeapSpace | 普通收集器的Eden区空间情况 |\n| youngFrom | HeapSpace | 普通收集器的Survivor From区空间情况 |\n| youngTo | HeapSpace | 普通收集器的Survivor To区空间情况 |\n| oldGen | HeapSpace | 普通收集器的Old区空间情况 |\n\n#### 5.2.4 JMapForHeapUsage\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| heapForGen| HeapForGen | 普通收集器的堆空间情况 |\n| heapForG1| HeapForG1 | G1收集器的堆空间情况 |\n\n#### 5.2.5 JMapForHeapResult \n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| heapConf| HashMap\\\u003cString\\, Object\\\u003e| 堆空间配置信息 |\n| heapUsage| JMapForHeapUsage| 堆空间使用情况 |\n\n## 6. JCmd\n\n向某一个虚拟机示例执行命令，比如你当前是虚拟机A，需要向虚拟机B执行命令，则需要次类相关方法。封装于`jcmd`\n\n### 6.1 方法\n| 名称 | 参数 | 返回值 | 含义 |\n| --- | --- | --- | --- |\n| listProcess() | 无 | JCmdResult | 列出虚拟机进程列表 |\n| ~~listCommands()~~ | int vmId（虚拟机ID，JpsCmd可获取）| JCmdResult | 列出虚拟机支持的命令,**后期将取消，由JCmdEnum对象代替** |\n| executeCommand() | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. JCmdEnum jCmdEnum（命令枚举类）| JCmdResult| 向某一个虚拟机实例执行命令|\n| ~~executeCommand()~~ | 1. int vmId（虚拟机ID，JpsCmd可获取）\u003cbr/\u003e2. JCmdEnum... jCmdEnum（命令枚举类数组）| JCmdResult| 向某一个虚拟机实例执行批量命令，**后期将取消**|\n### 6.2 结果对象\n```\n|—— beifengtz.vmconsole.entity.JvmResult\n    |—— beifengtz.vmconsole.entity.jcmd.JCmdResult\n\n|—— beifengtz.vmconsole.entity.jcmd.JCmdProcess\n|—— beifengtz.vmconsole.entity.jcmd.JCmdEnum\n```\n#### 6.2.1 JCmdEnum\n~~~java\nJFR_STOP(\"JFR.stop\"),\nJFR_START(\"JFR.start\"),\nJFR_DUMP(\"JFR.dump\"),\nJFR_CHECK(\"JFR.check\"),\nVM_NATIVE_MEMORY(\"VM.native_memory\"),\nVM_CHECK_COMMERCIAL_FEATURES(\"VM.check_commercial_features\"),\nVM_UNLOCK_COMMERCIAL_FEATURES(\"VM.unlock_commercial_features\"),\nMANAGEMENTAGENT_STOP(\"ManagementAgent.stop\"),\nMANAGEMENTAGENT_START_LOCAL(\"ManagementAgent.start_local\"),\nMANAGEMENTAGENT_START(\"ManagementAgent.start\"),\nGC_ROTATE_LOG(\"GC.rotate_log\"),\nTHREAD_PRINT(\"Thread.print\"),\nGC_CLASS_STATS(\"GC.class_stats\"),\nGC_CLASS_HISTOGRAM(\"GC.class_histogram\"),\nGC_HEAP_DUMP(\"GC.heap_dump\"),\nGC_RUN_FINALIZATION(\"GC.run_finalization\"),\nGC_RUN(\"GC.run\"),\nVM_UPTIME(\"VM.uptime\"),\nVM_FLAGS(\"VM.flags\"),\nVM_SYSTEM_PROPERTIES(\"VM.system_properties\"),\nVM_COMMAND_LINE(\"VM.command_line\"),\nVM_VERSION(\"VM.version\");\n~~~\n\n#### 6.2.2 JCmdProcess\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| vmId | int | 虚拟ID |\n| content | String | 虚拟机进程信息内容 |\n\n#### 6.2.3 JCmdResult\n|   属性  |  类型  |   含义  |\n| --- | --- | --- |\n| processes | List\\\u003cJCmdProcess\\\u003e | 进程信息列表 |\n| result| String | 命令执行结果 |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftzfun%2Fvmconsole-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftzfun%2Fvmconsole-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftzfun%2Fvmconsole-api/lists"}