Я хочу получить общее использование ЦП всех ядер. Мне нужно напечатать что-то вроде этого:
Cpu 1: 33%
Cpu 2: 12%
Cpu 3: 66%
Cpu 4: 100%
Я пробовал использовать этот код:
OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
int availableProcessors = operatingSystemMXBean.getAvailableProcessors();
long prevUpTime = runtimeMXBean.getUptime();
long prevProcessCpuTime = operatingSystemMXBean.getProcessCpuTime();
double cpuUsage;
try
{
Thread.sleep(500);
}
catch (Exception ignored) { }
operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long upTime = runtimeMXBean.getUptime();
long processCpuTime = operatingSystemMXBean.getProcessCpuTime();
long elapsedCpu = processCpuTime - prevProcessCpuTime;
long elapsedTime = upTime - prevUpTime;
cpuUsage = Math.min(99F, elapsedCpu / (elapsedTime * 10000F * availableProcessors));
System.out.println("Java CPU: " + cpuUsage);
Но этот код дает мне такой вывод: Java CPU: 27.504911422729492.
Может кто-то помочь мне с этим?
Ну и что? вы хотите отформатировать двойной?
Мне нужно получить информацию обо всех ядрах и их загрузке. Этот фрагмент кода дает мне информацию об одном ядре. Мне нужно что-то вроде команды "htop" в среде Linux.




JavaSysMon использует подход, специфичный для ОС, например. в Linux он анализирует /proc/cpuinfo для перечисления ядер. Для определения фактического использования ядра ЦП он анализирует файл /proc/stat (см. LinuxMonitor).
Спасибо! Не могли бы вы предоставить фрагмент кода с выводом 4 ядер и их использования?
Чего вы ждали?