跟我学系列之JVM远程监控编写(一)

简介: 从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,可以很方便的获取到JVM的内存、GC、线程、锁、class、甚至操作系统层面的各种信息,本文就简单的介绍一种利用JMX对JAVA进程进行CPU、堆内存使用的监控。

从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,可以很方便的获取到JVM的内存、GC、线程、锁、class、甚至操作系统层面的各种信息,本文就简单的介绍一种利用JMX对JAVA进程进行CPU、堆内存使用的监控。很多朋友都在说,其实真没必要,现在有很多的工具都可以监控,比如:JMap,JHat,MAT,VIsualVM,JConsole工具都可以,但是有些时候Jconsole不一定能监控到作为系统服务的java进程,在这里我给大家做一个入门介绍。

JMX(Java Management Extensions),即JAVA管理扩展,用来监视和管理JVM以及其运行的操作系统。目前java平台主要提供了下图所示的9个MXBean, 各个MXBean的作用根据类名大概能猜出几分,具体可查API。

ClassLoadingMXBean
MemoryMXBean
ThreadMXBean
CompilationMXBean
GarbageCollectorMXBeans
MemoryPoolMXBeans
OperatingSystemMXBean
RuntimeMXBean
MemoryManagerMXBeans

java.lang.management包中的mxbean提供了基本的功能,在sum.com.management中对某些功能有所增强,当然我们也可以根据JMX规范提供自己的MXBean。

在正式编码之前,我们必须要得到JMXConnector并创建MBeanServerConnnection,有了这个connection我们就可以利用ManagementFactory创建需要的MXBean了,类依赖图如下:

代码如下:

然后,采集memory的数据就比较简单了,直接调用API获取:

采集CPU利用率需要自己计算一下,因为API只提供了获取cpu的使用时间,我得在两次系统时间间隔内获取两次CPU的使用时间,得到在该时间间隔内cpu使用的时间,相除即得到CPU的使用率,当然误差肯定存在。

如果想收集本地的JVM信息也可以这样写:

目录
相关文章
|
30天前
|
算法 安全 Java
【C/C++ 实用工具】静态代码检测工具和平台的一览
【C/C++ 实用工具】静态代码检测工具和平台的一览
21 0
|
27天前
|
监控 Oracle Java
《深入浅出Java虚拟机 — JVM原理与实战》带你攻克技术盲区,探索各大JVM虚拟机特色 —— JVM故障排除指南(先导篇)
《深入浅出Java虚拟机 — JVM原理与实战》带你攻克技术盲区,探索各大JVM虚拟机特色 —— JVM故障排除指南(先导篇)
36 0
|
18天前
|
Rust 监控 网络协议
运用Rust编写高效的远程监控多台电脑屏幕工具
使用Rust编程语言开发远程监控多台电脑屏幕的工具,通过安装客户端实时传输屏幕截图至监控端。示例代码展示如何利用Rust的网络编程和图像处理库捕获、发送及接收屏幕截图。监控端接收到数据后可进行保存或上传等处理,实现高效可靠的远程监控解决方案。
54 2
|
3月前
|
存储 Unix Shell
Python 自动化指南(繁琐工作自动化)第二版:十七、计时、安排任务和启动程序
Python 自动化指南(繁琐工作自动化)第二版:十七、计时、安排任务和启动程序
59 1
|
10月前
|
小程序 前端开发 IDE
智能排班系统 【web前端/小程序结构介绍+开发环境介绍+项目启动】
智能排班系统 【web前端/小程序结构介绍+开发环境介绍+项目启动】
90 1
|
安全 IDE Java
【Java应用诊断工具】「BTrace」基本概念和原理的介绍(1)
【Java应用诊断工具】「BTrace」基本概念和原理的介绍(1)
122 0
|
移动开发 JSON 小程序
【小程序开篇】小程序架构和配置
【小程序开篇】小程序架构和配置
245 0
【小程序开篇】小程序架构和配置
|
SQL 前端开发 大数据
编程实用工具大全(二)(前后端皆可用,不来看看?)
1.零代码工具箱 - 专为前端打造 1. SVG波浪背景生成器 2.在线生成 新拟态风格 CSS 代码 3.在线生成CSS玻璃形态效果 4.CSS文本排版工具 2. 在线模拟数据生成器-专为后端打造 3.VARBook-适合英语基础薄弱者 4.零代码 - Table在线布局工具(Excel转HTML) 5.随意构建有机外观的形状
编程实用工具大全(二)(前后端皆可用,不来看看?)
|
Java Maven Docker
jib-java容器化工具
Jib是google开源的Java容器化工具 简单——Jib使用Java开发,并作为Maven或Gradle的一部分运行。你不需要编写Dockerfile或运行Docker守护进程,甚至无需创建包含所有依赖的大JAR包。
2539 1