2009-05-12 12 views
2

Ich habe eine Anforderung zum Sammeln von Statistiken einer JVM in regelmäßigen Zeitabständen mit. Später muss ich den JVM verfügbaren Speicher/freien Speicher, benutzter Speicher, Gesamtspeicher protokollieren.Vorteile von MemoryPoolMXBean.getUsage() gegenüber Runtime.freeMemory()

Im Folgenden sind die zwei Optionen, die ich mir vorgestellt habe.

  1. ManagementFactory.getMemoryPoolMXBeans() und durch jede MemoryPoolMXBean laufen und schließlich die Erhebung statistischer Daten mit MemoryPoolMXBean.getUsage().

  2. Runtime.freeMemory(), Runtime.maxMemory(), Runtime.totalMemory

Welches ist der beste Weg ist, um die Statistiken zu sammeln. Verwenden von MemoryPoolMXBean.getUsage() oder Laufzeitklasse.

Antwort

2

Dies ist ungefähr hören zu Ihrem Speicherverbrauch während des gesamten Anwendungslebenszyklus, anstatt für Informationen an verschiedenen Stellen innerhalb Ihrer Anwendung stochern.

Wie in Memory notifications in Java erwähnt, haben Sie einen interaktiven Weg Speicher zu überwachen, da Sie eine Benachrichtigung Listener zu Ihrem MemoryMXBean hinzufügen können.

Also für punktuelle sehr lokale Überprüfung, Runtime kann genug sein, für die globale Überwachung, MemoryMXBeans ist der Weg zu gehen.

Verwandte Themen