JVM遠程監控編寫(一)

從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 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索