从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,能够很方便的获取到JVM的内存、GC、线程、锁、class、甚至操做系统层面的各类信息,本文就简单的介绍一种利用JMX对JAVA进程进行CPU、堆内存使用的监控。不少朋友都在说,其实真不必,如今有不少的工具均可以监控,好比:JMap,JHat,MAT,VIsualVM,JConsole工具均可以,可是有些时候Jconsole不必定能监控到做为系统服务的java进程,在这里我给你们作一个入门介绍。java
JMX(Java Management Extensions),即JAVA管理扩展,用来监视和管理JVM以及其运行的操做系统。目前java平台主要提供了下图所示的9个MXBean, 各个MXBean的做用根据类名大概能猜出几分,具体可查API。工具
ClassLoadingMXBean编码
MemoryMXBean操作系统
ThreadMXBean线程
CompilationMXBean接口
GarbageCollectorMXBeans进程
MemoryPoolMXBeans内存
OperatingSystemMXBeanio
RuntimeMXBeanconsole
MemoryManagerMXBeans
java.lang.management包中的mxbean提供了基本的功能,在sum.com.management中对某些功能有所加强,固然咱们也能够根据JMX规范提供本身的MXBean。
在正式编码以前,咱们必需要获得JMXConnector并建立MBeanServerConnnection,有了这个connection咱们就能够利用ManagementFactory建立须要的MXBean了,类依赖图以下:
代码以下:
而后,采集memory的数据就比较简单了,直接调用API获取:
采集CPU利用率须要本身计算一下,由于API只提供了获取cpu的使用时间,我得在两次系统时间间隔内获取两次CPU的使用时间,获得在该时间间隔内cpu使用的时间,相除即获得CPU的使用率,固然偏差确定存在。
若是想收集本地的JVM信息也能够这样写:
做者:小程故事多 连接:https://www.jianshu.com/p/fe37a62ba155 來源:简书 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。