首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

多語言獲取 CPU 佔用率實現:Java、C#、PHP、Node.js 方案對比

     編輯:Java 綜合教學

多語言獲取 CPU 佔用率實現:Java、C#、PHP、Node.js 方案對比

系統監控中獲取 CPU 佔用率是基礎需求。本文匯總主流語言的實現方案,重點講解跨平台通用的 WMIC 方式與語言原生 API 對比。

通用方案:WMIC 命令行

Windows 系統通用,調用系統工具獲取瞬時 CPU 佔用:

C:\> wmic cpu get LoadPercentage
LoadPercentage
71

Java 實現

public static int getCpuRate() throws CantGetData {
    String cmd = "wmic cpu get LoadPercentage";
    String ret = CmdX.exec(cmd);
    String[] lines = ret.split("\n");
    List validLines = new ArrayList<>();
    for (String line : lines) {
        String trimmed = line.trim();
        if (trimmed.length() > 0) validLines.add(trimmed);
    }
    if (validLines.size() == 1) throw new CantGetData(ret);
    String cpu = validLines.get(1).trim(); // 第2行是數值
    return Integer.parseInt(cpu);
}

關鍵注意事項

  1. 瞬時值 vs 平均值:WMIC 返回瞬間佔用率,生產環境建議採樣多次取平均
  2. 總 CPU vs 核心級:默認返回總佔用,需詳細參數獲取單核數據
  3. 高負載下失效:CPU 極高時 WMIC 可能無響應,需備選方案

降低 CPU 佔用技巧

// 使用 sleep 控制執行頻率,間接限制線程池任務吞吐
Thread.sleep(100); // 根據業務調整

各語言原生 API 參考

語言核心 API/類特點
JavaThreadMXBean, OperatingSystemMXBean標準化、跨平台、可獲取進程/線程級
C#/.NETPerformanceCounter("Processor", "% Processor Time", "_Total")Windows 原生、功能豐富
PHPsys_getloadavg() / /proc/stat (Linux)Linux 下解析 /proc 更準確
Node.jsos.cpus() 計算時差非阻塞、需連續採樣計算

參考資源

  • Java ThreadMXBean API 文檔
  • Java 獲取本進程 CPU 佔用率 - CSDN
  • Java 獲取 CPU/內存/硬盤使用率 - 博客園
  • Java 怎麼獲取 CPU 佔用率 - 百度知道

選擇方案時需考慮:部署環境、精度要求、性能開銷、維護成本。WMIC 適合簡單 Windows 監控,生產系統建議使用語言原生 API 或成熟監控組件(如 Micrometer、Prometheus Client)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved