推荐一个轻量的Java虚拟机监控工具:Jvmm,开箱即用,支持丰富的功能
功能支持下载地址Jvmm是一个轻量的JVM监控工具,提供有丰富的监控功能:查看JVM信息(Runtime、内存、CPU、线程、GC、ClassLoader等)以及OS信息(内存、磁盘等),可生成火焰图,代码热更,反编译,提供多种服务模式(http、哨兵等)。适合用于服务健康监控、线上调优、排查问题、性能测试等场景。
github: https://github.com/tzfun/jvmm/releases/download/2.0.2/jvmm-2.0.2.zip
gitee: https://gitee.com/tzfun/jvmm/releases/download/2.0.2/jvmm-2.0.2.zip
项目地址:https://github.com/tzfun/jvmm
快速上手直接运行
java -jar jvmm.jar
运行后会提示你进入什么模式,我们先将Jvmm attach到一个测试程序中,这里选择 2
接下来会询问你是否使用当前目录的配置文件,你可以选择否然后自己指定一个配置文件路径,这里我们先使用默认的配置,选择Y进入下一步
接下来会提示你选择目标进程,这里我们选择提前启动好的测试程序
最后attach成功之后会提示你它运行在了什么端口,看到这样的提示说明你已经成功的将Jvmm Attach到你的目标程序了,然后你就可以使用它的Client模式与你的程序通信
仍然是运行java -jar jvmm.jar
进入模式选择,这一次我们选择1 client模式
接下来会提示你需要连接的Jvmm目标程序地址,前面我们attach的时候提示是运行在5010端口,这里就填127.0.0.1:5010
然后会提示你目标程序需不需要身份认证,因为默认配置文件里没有开启认证所以这里选择否直接连接,如果提示下面的信息说明你就成功连接上了你的程序。
剩下的就是使用它内置的命令进行查看监控数据或者执行一些操作
监控功能>help info
info: -
Get information about the target server
-f
查看操作系统基础信息查看操作系统CPU负载、内存使用情况、磁盘占用情况查看类加载统计查看类加载器实例信息查看编译统计信息查看垃圾收集器信息查看进程信息因为数据项太多就不进行展示了,主要是进程运行情况、参数以及环境变量等信息
info -t process
查看JVM内存信息查看JVM内存管理器查看JVM内存池查看线程情况查看线程堆栈生成火焰图在Linux和Mac环境下可以生成火焰图,支持较多的采样事件,也可以针对于Java方法调用栈进行采样跟踪,下面是使用方法
>help profiler
profiler: -
Get server sampling report. Only supported on MacOS and Linux.
-cSample counter type, optional values: samples, total. Default value: samples.
-e Sample event, optional values: cpu, alloc, lock, wall, itimer. Default value: cpu.
-f Output file path, supported file type: html, txt, jfr. If not filled, will output text content
-iThe time interval of the unit to collect samples, the unit is nanosecond. Default value: 10000000 ns.
-t
比如我直接执行profiler -t 2
就可以针对于目标进程进行CPU样本采样2秒,并生成报告
不过一般为了方便查看,生成可视化的火焰图是更好的选择
profiler -t 5 -f flame_graph.html
执行后等待5秒就会生成这样一份火焰图报告
你可以选择不同的采样事件,下面给出一些示例:
wall 查看所有线程调用栈:
profiler -e wall -t 5 -f flame_graph.html
alloc 查看内存分配
profiler -e alloc -t 5 -f flame_graph.html
查看方法调用栈
profiler -e java.net.ServerSocket.accept -t 10 -f flame_graph.html
反编译代码使用Jvmm也可以反编译代码,帮助你在运行时查看源码
>help jad
You can use the following command in client mode.
jad: -
Shutdown service.
-cRequired, the java class to be decompiled
-f Output file path
-mSpecify the method name in the decompiled class
你也可以指定某一个方法查看源码
你可以远程执行JVM Tools,执行方法与原生调用几乎一样,只是通过Jvmm赋予了其远程调用的能力
你可以通过Client工具关闭正在运行的Jvmm,改关闭操作只是针对于运行的Jvmm Server,并不会影响你的程序正常运行。
Jvmm的Client工具在平时的开发工作中足以满足大部分需求,它还提供了非常多的其他功能,例如Java Agent支持、Http Server服务、哨兵模式、Core API
更多使用方法后续持续更新,创作不易,觉得不错给个star~
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧