Я хотів би стежити за наступною системною інформацією на Java:
- Поточне використання процесора ** (у відсотках)
- Доступна пам'ять * (вільна / загальна)
Вільний простір на диску (вільний / загальний)
* Зауважте, що я маю на увазі загальну пам'ять, доступну для всієї системи, а не лише для JVM.
Я шукаю крос-платформенне рішення (Linux, Mac та Windows), яке не покладається на власний код, що викликає зовнішні програми або використовує JNI. Хоча це життєздатні варіанти, я вважаю за краще не підтримувати специфічний для себе код, якщо у когось вже є краще рішення.
Якщо там є безкоштовна бібліотека, яка робить це надійно, на платформі, це було б чудово (навіть якщо вона здійснює зовнішні дзвінки або використовує власний код).
Будь-які пропозиції дуже вдячні.
Для уточнення, я хотів би отримати поточне використання процесора для всієї системи, а не лише Java-процесів.
API SIGAR забезпечує всю функціональність, яку я шукаю в одному пакеті, тому це найкраща відповідь на моє запитання поки що. Однак, оскільки він отримав ліцензію відповідно до GPL, я не можу використовувати його для своєї первісної мети (закрите джерело, комерційний продукт). Можливо, що Hyperic може ліцензувати SIGAR для комерційного використання, але я не розглядав це. Що стосується моїх проектів GPL, я, безумовно, буду вважати SIGAR в майбутньому.
Для моїх поточних потреб я схиляюся до наступного:
- Для використання процесора
OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()
(середнє завантаження на процесор) - Для пам’яті
OperatingSystemMXBean.getTotalPhysicalMemorySize()
таOperatingSystemMXBean.getFreePhysicalMemorySize()
- Для місця на диску
File.getTotalSpace()
іFile.getUsableSpace()
Обмеження:
getSystemLoadAverage()
І методи простору Виконання запитів диска доступні тільки в Java 6. Крім того , деякі функціональні можливості JMX не можуть бути доступні для всіх платформ (тобто було повідомлено , що getSystemLoadAverage()
повертає -1 на Windows).
Хоча спочатку була ліцензована під GPL, вона була змінена на Apache 2.0 , яка, як правило, може використовуватися для комерційних продуктів із закритим кодом.