2010-07-26 2 views
2

В настоящее время я пишу приложение Java, которое должно посмотреть, как «сильно загружен» работающий на нем компьютер. В * nix среднее значение нагрузки, деленное на количество процессоров, отлично соответствует счету, и мы извлекаем среднее значение нагрузки с ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage(). К сожалению, это возвращает -1 в Windows, так как вызов, по-видимому, слишком «дорого», который часто вызывается. Какой самый простой способ получить аналогичные показатели Windows, такие как длина очереди процессора или загрузка процессора, либо в чистой Java, либо через JNI?Получите Windows «load average» в Java

ответ

3

Вы можете получить загрузку процессора в ОС Windows с помощью WMI. Некоторый код и документация для доступа к WMI с Java, по-видимому, доступны here.

+0

Или еще проще, используйте Wmic интерфейс! – Anders

+0

Я всегда был поклонником делать это в коде, вызывая внешнюю программу, но wmic кажется полезным. –

+0

WMI выглядит так, как я. Я не думаю, что я поеду по маршруту J-Integra, хотя ... я думаю использовать код из http://henryranch.net/software/jwmi-query-windows-wmi-from-java/, хотя Я все еще смотрю на то, что называет его программным путем (он создает динамически VBScript). – Scott

2

Попробуйте использовать бесплатный API Hyper SIGAR. Это API-интерфейс с перекрестной платформой для вызова системной информации. Он использует JNI для Windows/Linux/Unix/Mac/etc.

http://www.hyperic.com/products/sigar

Я написал JNLP менеджер задач/информация монитор с ним, и это приличная API.

http://www.goliathdesigns.com/2009/12/sixth-post/

Исходный код:

http://sourceforge.net/projects/sysinfomonitor/