Получение загрузки процессора процесса с использованием библиотеки 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

Некоторое время некоторые процессы всегда потребляют нулевой процент ЦП. поэтому перейдите к диспетчеру задач и найдите процесс с высокой загрузкой процессора и передайте исполняемый файл этого процесса в соответствующее место кода

Другие вопросы по тегам