Java на Windows должна регистрировать загрузку процессора и аналогичную информацию о производительности конкретной ОС - PullRequest
3 голосов
/ 21 октября 2011

На компьютерах под управлением Windows работает библиотека Java, которая должна регистрировать информацию об ОС, такую ​​как загрузка процессора, память, занятая JVM и т. Д., Которую я вполне уверен, что сама Java не может получить, потому что она зависит от ОС.

Эта информация необходима в журналах этой библиотеки, чтобы указать клиентам, что некоторые операции завершились неудачно, поскольку библиотека не смогла получить достаточно ресурсов.

Невозможно выбрать JVM, т. Е. Мы не можем требовать, чтобы наши клиенты использовали конкретную JVM, которая реализует специфические функциональные возможности ОС Windows.

Существует ли библиотека Windows (DLL) или API, которую можно использовать через JNI?

Мы могли бы также реализовать DLL на C ++ или C # сами, где мне нужно было бы посмотреть, как это можно сделать наиболее эффективно?

Редактировать: Мне нужен доступ к данным о процессе самой JVM, которые, я думаю, я могу получить только через собственный Windows API. Поэтому я думаю, что мне придется реализовать небольшую программу на C и связать ее как нативную DLL через JNI. Любые советы по этому поводу?

Ответы [ 2 ]

5 голосов
/ 21 октября 2011

Для части памяти, посмотрите на несколько связанных с памятью методов Runtime .Чтобы получить занятую память, попробуйте следующее:

Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.totalMemory() - runtime.freeMemory());

Я еще не пробовал это, но для загрузки процессора посмотрите на после .Метод getSystemLoadAverage() должен это сделать.

Надеюсь, это поможет!

1 голос
/ 21 октября 2011

Если ваши потребности не удовлетворяются java.lang.Runtime, вы можете пойти по пути JNI и разработать Java API, который обеспечит именно то, что вам нужно.

Я не знаю ни одного изкоробочные библиотеки DLL, которые вы можете обернуть (с помощью JNI), но данные, которые вы ищете, находятся в реестре в виде так называемых «счетчиков производительности».В Linux вы можете прочитать данные из /proc.

См. Сайт MSDN для получения дополнительной информации о Счетчики производительности .

...