Получение загрузки процессора процесса с использованием библиотеки Sigar
Я пытался получить загрузку ЦП процесса с помощью библиотеки Sigar, но я всегда получаю значения 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
являются своего рода загадкой. Я также взглянул на это еще один, но он не дал мне ничего нового.
Кто-нибудь пытался контролировать процесс CPU раньше с 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
Некоторое время некоторые процессы всегда потребляют нулевой процент ЦП. поэтому перейдите к диспетчеру задач и найдите процесс с высокой загрузкой процессора и передайте исполняемый файл этого процесса в соответствующее место кода