我一直在尝试使用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? 完成它的方法是什么?
感谢。
答案 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提供给代码中的相关位置