Je tiens à surveiller un système d'information en Java:
- utilisation actuelle du processeur** (%)
- la mémoire disponible* (libre/total)
-
d'espace disque disponible (libre/total)
*notez que je veux dire la quantité totale de mémoire disponible pour l'ensemble du système, non seulement la JVM
Je suis à la recherche d'une solution multi-plateforme (Linux, Mac, Windows) qui ne repose pas sur mon propre code d'appel de programmes externes ou de l'utilisation de JNI. Bien que ces sont des options viables, je préfère ne pas maintenir des OS du code spécifique de moi si quelqu'un a déjà une meilleure solution.
Si il y a un accès gratuit à la bibliothèque qui ne ce dans la plus fiable, la croix-plate-forme de manière, ce serait génial (même si il fait des appels externes ou de l'utilisation de code natif lui-même).
Toutes les suggestions sont appréciés.
**EDIT: Pour préciser, j'aimerais obtenir de l'utilisation actuelle du PROCESSEUR pour l'ensemble du système, pas seulement le processus Java(es).
EDIT: Le SIGAR API fournit toutes les fonctionnalités que je cherche dans un paquet, de sorte que c'est la meilleure réponse à ma question pour le moment. Toutefois, en raison étant sous licence GPL, je ne peux pas l'utiliser pour mon but, à l'origine (un fermé source, produit commercial). Il est possible que Hyperic peut licence SIGAR pour un usage commercial, mais je n'ai pas regardé. Pour mon GPL projets, je vais certainement considérer SIGAR dans l'avenir.
Pour mes besoins, je me suis penchée vers la suivante:
- pour l'utilisation du cpu, OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors() (charge moyenne par uc)
- pour mémoire, OperatingSystemMXBean.getTotalPhysicalMemorySize() et OperatingSystemMXBean.getFreePhysicalMemorySize()
- pour l'espace disque, Fichier.getTotalSpace() et File.getUsableSpace()
Limitations:
Le getSystemLoadAverage() et l'espace disque de l'interrogation méthodes ne sont disponibles que sous Java 6. Aussi, certains JMX fonctionnalités peuvent ne pas être disponibles pour toutes les plates-formes (c'est à dire qu'il a été signalé que getSystemLoadAverage() retourne -1 sur Windows).
EDIT 2011-08-18: Bien qu'à l'origine sous licence GPL, il a été changé pour Apache 2.0, qui peuvent généralement être utilisés pour le code source fermé, des produits commerciaux.