3

我一直在尝试通过使用Sigar 库来获取进程 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());

我一直在看这个其他相关问题及其接受的答案,但它似乎无法正常工作,而且诸如此类TOTAL_TIME_UPDATE_LIMIT的事情有点神秘。我还看了一下另一个,但它并没有为我提供任何新的东西。

有没有人尝试过使用 Sigar 监控进程 CPU?实现它的方法是什么?

谢谢。

4

1 回答 1

0

像这样使用它

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放到代码中的相关位置

于 2014-04-22T16:02:09.043 回答