Использование Java для получения загрузки ЦП для процессов Windows
Я ищу решение Java, чтобы найти использование процессора для работающего процесса в Windows. После просмотра веб-страниц, кажется, мало информации о решении на Java. Имейте в виду, я не ищу, чтобы определить использование процессора для JVM, но любой процесс, работающий в Windows в то время.
Я могу получить информацию об использовании памяти в Java с помощью exec("tasklist.exe ... ") для получения и анализа информации о процессе. Хотя для каждого процесса есть таймер совокупного цикла ЦП, я не вижу столбца использования ЦП.
Любая помощь будет принята с благодарностью. Также, если возможно, я бы хотел держаться подальше от библиотек C; однако, если нет никакой другой альтернативы, решение таким способом было бы уместным.
Большое спасибо,
Стив
6 ответов
Если вам подходит лицензированный API GPL, попробуйте
СИГАР - Сборщик информации о системе и репортер
Это позволяет получить доступ к информации, которую вы хотите (и многое другое) и поддерживается на многих соответствующих платформах
Посмотри на Джейкоба. Это позволит вам вызывать COM-объекты, и для такого рода информации в Windows существует множество COM-объектов.
Попробуйте javasysmon, лицензированный BSD (если быть точным: лицензия FreeBSD с 2 пунктами).
Я использовал его для получения ядра процессора и загрузки процессора. Я думаю, это намного лучше, чем с помощью tasklist.exe.
Вы пишете / используете отдельную программу для выгрузки этих данных куда-то, а затем можете получить их из Java через сеть, файлы или БД. В Linux вы всегда можете прочитать /proc
но не на Win, необходима отдельная прога (без JNI).
Посмотрите на эти вопросы:
- Как я могу проверить использование процессора и памяти в Java?
- Использование Java для получения системной информации на уровне ОС
- Как контролировать использование процессора, памяти и диска на компьютере в Java?
- Загрузка процессора с Java
- Эффективный способ получить процессорное время потока, используя JMX
любой запущенный процесс в Windows
Таким образом, не контролируется Java в любом случае?
Я хотел бы держаться подальше от JNI
Забудь это. Java не зависит от платформы. Если вы хотите получить доступ к информации о платформе, вы не можете обойти JNI.