[Open Source] A feature-rich tool for service-oriented monitoring of Java Virtual Machines and operating systems

Open SourceProcess Management
2026-06-28 04:25 2 次浏览 • 0 次下载 0KB
[Open Source] A feature-rich tool for service-oriented monitoring of Java Virtual Machines and operating systems

1. Project Overview

JVMM (JVM Monitor) is a monitoring tool that provides service-oriented monitoring for Java Virtual Machines and operating systems. It offers extensive data collection capabilities, including OS metrics (memory, CPU, disk status and I/O, network interface status and I/O, etc.) and JVM metrics (memory, threads, thread pools, memory pools, GC, class loaders, etc.). It also provides features such as flame graph generation, Java code hot swapping, and decompilation. It is suitable for scenarios such as service health monitoring, application tuning, troubleshooting, and performance testing.

2. Open Source License

Licensed under Apache-2.0

3. Screenshots

Example

Example of Data Collection Using the Client Tool

Flame Graph Generation Example

Code Invocation Example

  • API Invocation Example
  • Server Startup and Usage Example
  • Jvmm Connection Tool Usage Example

Dashboard Application Example

General-Purpose Utilities

Some components within the project can be used independently. They are lightweight and easy to get started with.

  • jvmm-convey: An independent, lightweight, general-purpose network communication development tool
  • jvmm-aop: An aspect-oriented programming development tool
  • jvmm-common: Includes commonly used utility classes
Detailed content, please refer to README.md document.

4. Feature Overview

Feature Support

  • Supports Java Virtual Machine data collection:
  • Process Information
  • Memory Information: Heap and off-heap memory usage, Manager and Pool information
  • Thread Information: Stack traces, locks, deadlock detection, CPU Time, Wait Time, etc.
  • Thread Pool Information: Configuration parameters, status, task statistics, etc.
  • GC Information: Generational collector information, GC count, GC duration, etc.
  • Class Loading Information: Class loading statistics, class loaders, JIT
  • Supports operating system data collection: Memory status, CPU load, disk status and I/O throughput, network interface status and I/O throughput, and port detection
  • Supports flame graph generation, with sampling events including CPU, memory allocation, thread stacks, Java method calls, and native method call stacks
  • Supports Java code decompilation and generation
  • Supports Java code hot updates (ClassLoader can be specified)
  • Supports remote GC execution
  • Supports remote execution of built-in JDK tool commands: jstat, jstack, jinfo, jmap, jcmd, etc.
  • Provides Three Service Modes
  • jvmm service: Uses a proprietary RPC protocol and requires a remote connection through the jvmm client. Secure and reliable.
  • http service: Provides HTTP interfaces for remote invocation without language restrictions.
  • Sentinel service: Periodically collects data and reports it to subscribers.
  • Supports transparent cross-process attachment to Java processes, remote connections, Java Agent startup, standalone server operation, and custom development
  • Supports JDK 8+
  • Supports Linux/Mac/Windows

5. Tech Stack

Quick Start

Please visit releases to download the latest version of jvmm, then extract it.

Quick Tip: Some Jvmm features depend on the local JDK environment. Make sure you have a JDK installed, not just a JRE. To quickly verify, run jps -l in your environment. If the command executes successfully and displays results, your environment is ready. Otherwise, errors may occur when running Jvmm.

First, execute the following command to generate the service JAR package.


java -jar jvmm.jar -m jar -s

Then start the server. Pay attention to your JDK version when starting it.


# Start the server. Use the following command for JDK 8
java -jar jvmm-server.jar

# For JDK 9+, use the following command
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

If startup succeeds, Jvmm Server will run on port 5010 by default. Then open a new terminal window in the current directory and execute:


java -jar jvmm.jar -m client -a 127.0.0.1:5010

If the connection to the server succeeds, you will enter client mode. You can enter the following command to collect process data. You can also enter help to view the usage instructions for all executable commands in this mode.


info -t process

Here are sample data collected in Jvmm client mode. Jvmm offers far more features than these. For additional functionality, please refer to the Jvmm documentation.

Usage Document

Jvmm's core data collection features are provided by the core module, while its service-oriented features are provided by the server module. Depending on your use case, you can choose either of the following two approaches:

  • Use Jvmm Server Directly
  • Develop Further Based on the core Module (More Features)
Detailed content, please refer to README.md document.

#1
资源直链https://gitee.com/tzfun/jvmm
去下载
星河码客

发现和分享优质开源项目,传承互联网精神,为开发者服务。

关于本站

联系我们

微信/广告合作:ITcloub (备注星河码客)

免责声明:本站资源版权归原作者所有,仅供学习与交流。如有侵权,请通过「关于我们 - 侵权投诉」联系删除。

Powered by Nuxt · Deployed on Cloudflare