[开源]一个提供Java虚拟机和操作系统服务式监控的工具,功能丰富
开源系统流程管理
![[开源]一个提供Java虚拟机和操作系统服务式监控的工具,功能丰富](https://yy123.ink/api/img/1782591963703-ipwpj7.jpg)
一、开源项目简介

JVMM(JVM Monitor)是一个提供Java虚拟机和操作系统服务式监控的工具,拥有丰富的数据采集功能:OS(内存、CPU、磁盘状态及IO、网卡状态及IO等)、 JVM(内存、线程、线程池、内存池、GC、类加载器等),还提供生成火焰图、Java代码热更、反编译等功能。适合用于服务健康监控、程序调优、问题排查、性能测试等场景。
二、开源协议
使用Apache-2.0开源协议
三、界面展示
示例
客户端工具采集数据示例
生成火焰图示例

代码调用示例
- API调用示例
- Server启动使用示例
- Jvmm连接工具使用示例
Dashboard应用示例

通用工具
项目内部有些组件是可以脱离项目使用的,轻量且上手简单
- jvmm-convey 一个独立的、轻量的、通用的网络通信开发工具
- jvmm-aop一个面向切面编程开发工具
- jvmm-common内置一些常用的工具类
详细内容请查看 README.md 文档。
四、功能概述
功能支持
- 支持Java虚拟机数据采集:
- 进程信息
- 内存信息:堆内、堆外内存使用情况,Manager、Pool信息
- 线程信息:堆栈、锁、死锁检测、CPU Time、Wait Time等
- 线程池信息:配置参数、状态、任务统计等
- GC信息:分代收集器信息、GC次数、GC耗时等
- 类加载信息:类加载统计、类加载器、JIT
- 支持操作系统数据采集:内存状态、CPU负载、磁盘状态及IO吞吐率、网卡状态及IO吞吐率、端口检测
- 支持火焰图生成,采样事件包括CPU、内存分配、线程栈、Java方法及native方法调用栈等
- 支持Java代码反编译生成
- 支持Java代码热更新(可指定ClassLoader)
- 支持远程执行GC
- 支持远程执行JDK自带工具命令:jstat、jstack、jinfo、jmap、jcmd等
- 提供三种服务模式
- jvmm服务:独有RPC协议,需使用jvmm客户端远程连接调用,安全可靠
- http服务:提供Http接口,不限开发语言远程调用
- 哨兵服务:定时采集数据并上报给订阅者
- 支持无感知跨进程attach到Java进程,远程连接,Java Agent启动,server独立运行启动,可自定义开发
- 支持 JDK 8+
- 支持 Linux/Mac/Windows
五、技术选型
快速体验
请前往releases下载最新版的jvmm,然后将其解压
小Tips:Jvmm 部分功能依赖于本地环境中的 jdk,请确保你的环境中安装的是jdk而不只是 jre,简单验证:在你的环境中执行jps -l, 如果可正常执行并输出结果则表示环境OK,否则在运行jvmm时可能会出现报错
首先执行下面指令生成服务jar包
java -jar jvmm.jar -m jar -s
然后启动server,启动时请注意你的jdk版本
# 启动server,jdk 8使用下面命令 java -jar jvmm-server.jar # jdk 9+ 请使用下面命令 java -jar --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED jvmm-server.jar
如果启动成功 Jvmm Server 将会默认运行在 5010 端口,然后你需要在当前目录新起一个窗口执行:
java -jar jvmm.jar -m client -a 127.0.0.1:5010
如果连接 server 成功那么你就进入了客户端模式,你可以输入下面指令去采集进程数据,当然输入help可以查看该模式下所有可执行指令的使用方法。
info -t process
这里提供了Jvmm client模式下采集的数据样例,Jvmm提供的功能远不止如此,更多功能请阅读 Jvmm 使用文档。
使用文档
Jvmm的核心数据采集功能在 core 模块,提供的服务式功能在 server 模块,根据你的使用场景可选择下面两种使用方式:
- 直接使用 Jvmm server
- 基于 core 模块二次开发(功能更全)
详细内容请查看 README.md 文档。
评论