簡體   English   中英

如何獲取JVM中所有線程的CPU百分比?

[英]How Do I Get The CPU Percentage For All Threads In The JVM?

我有一個java監控應用程序,用於監控Linux上的CPU(以及其他內容)。

我正在使用Sigar來獲取進程的CPU使用率。 http://cpansearch.perl.org/src/DOUGM/hyperic-sigar-1.6.3-src/docs/javadoc/org/hyperic/sigar/Sigar.html#getProcCpu%28long%29

但是,這只是一個過程級別。 htop顯示我的應用程序中的線程和每個使用的CPU百分比。

Sigar可以做到這一點嗎?

如果我在多核盒子上,是否有可能獲得每個核心的CPU利用率?

我想在CPU長時間以100%運行時發出警報,並確定線程列表中可能存在的罪魁禍首。

JMX可用於從Java運行時獲取此信息,但似乎CPU負載不是標准Java API的一部分,您需要轉換為com.sun.management.OperatingSystemMXBean

OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
double loadAverage = osBean.getSystemLoadAverage();
System.out.println("Load average: " + loadAverage);

if (osBean instanceof com.sun.management.OperatingSystemMXBean)
{
    com.sun.management.OperatingSystemMXBean sunOsBean = (com.sun.management.OperatingSystemMXBean)osBean;
    double cpuLoad = sunOsBean.getSystemCpuLoad();
    System.out.println("CPU load: " + cpuLoad);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM