使用Sigar库获取进程CPU使用率

时间:2014-03-14 11:45:46

标签: java jvm cpu cpu-usage sigar

我一直在尝试使用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? 完成它的方法是什么?

感谢。

1 个答案:

答案 0 :(得分: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提供给代码中的相关位置