Comment puis-je surveiller l'ordinateur du PROCESSEUR, de la mémoire, et l'utilisation du disque en Java?

Je tiens à surveiller un système d'information en Java:

  • Utilisation actuelle du PROCESSEUR** (en%)
  • 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 et 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.

Pour clarifier, je voudrais obtenir de l'utilisation actuelle du PROCESSEUR pour l'ensemble du système, pas seulement le processus Java(es).

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é en elle. 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, File.getTotalSpace() et File.getUsableSpace()

Limitations:

La getSystemLoadAverage() espace disque et de l'interrogation de méthodes sont disponibles uniquement sur la version 6 de Java. 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).

Bien qu'à l'origine sous licence GPL, il a été changé à Apache 2.0, qui peuvent généralement être utilisés pour le code source fermé, des produits commerciaux.

  • Pour clarifier, le sigar api vous permet de vous des infos sur le système. Si vous voulez jvm info sur JMX.
  • SIGAR être sous GPL ne vous empêche pas de l'utiliser, cela signifie simplement que vous avez à communiquer avec les auteurs et de demander d'autres licences. Les auteurs sont souvent heureux d'accepter une somme modique et permettent de licences commerciales.
  • Depuis la version 1.6.4 SIGAR est à l'aide de la licence Apache.
  • savez-vous comment obtenir la charge pour chaque processeur?
InformationsquelleAutor David Crow | 2008-09-06