Wie kann ich den computer überwachen die CPU, Speicher und Festplattennutzung in Java?

Ich würde gerne überwachen Sie die folgenden system-Informationen in Java:

  • Aktuelle CPU-Nutzung** (Prozent)
  • Freier Speicher* (frei/Gesamt)
  • Verfügbarer Festplattenspeicher (frei/Gesamt)

    *Beachten Sie, dass ich meine gesamte Speicher verfügbar, um das ganze system, nicht nur für die JVM.

Ich bin auf der Suche nach einem cross-Plattform-Lösung (Linux, Mac und Windows) , der sich nicht auf meinem eigenen code aufrufen von externen Programmen oder mittels JNI. Obwohl diese sind praktikable Möglichkeiten, ich würde es vorziehen, nicht zu pflegen OS-spezifischen code mich, ob das schon jemand hat eine bessere Lösung.

Wenn es eine freie Bibliothek gibt, das dies tut, zuverlässig, plattformübergreifend, das wäre toll (auch wenn es externe Anrufe oder verwendet native code selbst).

Alle Vorschläge werden sehr geschätzt.

Klarzustellen, ich möchte die aktuelle CPU-Auslastung für das gesamte system, nicht nur der Java-Prozess(es).

Die SIGAR API bietet alle Funktionen, die ich Suche in einem Paket, so ist es die beste Antwort auf meine Frage bisher. Aber, aufgrund dass es unter der GPL lizensiert ist, kann ich nicht verwenden es für meinen ursprünglichen Zweck (eine closed-source -, kommerziellen Produkt). Es ist möglich, dass Hyperic können Lizenz SIGAR für die kommerzielle Nutzung, aber ich habe nicht hingeschaut. Für meinen GPL-Projekte, ich werde auf jeden Fall überlegen SIGAR in die Zukunft.

Strom für meine Bedürfnisse, ich bin Neigung zu den folgenden:

  • Für CPU-Nutzung, die OperatingSystemMXBean.getSystemLoadAverage() /OperatingSystemMXBean.getAvailableProcessors() (Durchschnittliche Auslastung pro cpu)
  • Für Speicher OperatingSystemMXBean.getTotalPhysicalMemorySize() und OperatingSystemMXBean.getFreePhysicalMemorySize()
  • Für Speicherplatz File.getTotalSpace() und File.getUsableSpace()

Einschränkungen:

Den getSystemLoadAverage() und Speicherplatz Abfragen-Methoden sind nur unter Java 6. Auch einige JMX-Funktionen möglicherweise nicht verfügbar auf allen Plattformen (D. H. es ist berichtet worden, dass getSystemLoadAverage() gibt -1 zurück, auf Windows).

Obwohl ursprünglich unter der GPL lizenziert, es geändert wurde zu Apache 2.0die in der Regel für closed-source, kommerziellen Produkten.

InformationsquelleAutor der Frage David Crow | 2008-09-06

Schreibe einen Kommentar