【问题标题】:Getting process CPU usage using Sigar library使用 Sigar 库获取进程 CPU 使用率
【发布时间】:2014-03-14 11:45:45
【问题描述】:

我一直在尝试使用 Sigar library 来获取进程 CPU 使用率,但我总是得到 0 的值,即使它应该更高。

我每秒钟都在计时器上这样做:

Sigar sigar = new Sigar();
long pid = find.find("Exe.Name.ct=myprocess.exe");

ProcCpu cpu = sigar.getProcCpu(pid);
System.out.println(cpu.getPercent());

我一直在看this other related question and its accepted answer,但它似乎不能正常工作,而且像TOTAL_TIME_UPDATE_LIMIT 这样的东西有点神秘。 我还查看了this another one,但它并没有为我提供任何新内容。

之前有人试过用 Sigar 监控进程 CPU 吗? 有什么方法可以实现?

谢谢。

【问题讨论】:

    标签: java jvm cpu cpu-usage sigar


    【解决方案1】:

    这样使用

    public static void main(String args[]) {
        try {
            final Sigar sigar = new Sigar();
            while (true) {
                ProcCpu cpu = sigar.getProcCpu("Exe.Name.ct=eclipse.exe");
                System.out.println(cpu.getPercent());
            }
        } catch (SigarException ex) {
            ex.printStackTrace();
        }
    
    }
    

    这是我得到的示例输出

    0.0
    0.11450381679389313
    0.12213740458015267
    0.10714285714285714
    0.0
    0.0
    0.0
    

    有时某些进程总是消耗零百分比的 CPU。那就去任务管理器找一个CPU占用率高的进程,把那个进程的exe放到代码中的相关位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2017-11-11
      相关资源
      最近更新 更多