2012-05-09 9 views
8

Tworzę zaplanowany executor, aby odczytać użycie pamięci JVM. Mam natknąć się na dwa sposoby, aby uzyskać statystyki pamięci w uruchomionego JVM - Runtime & MemoryMXBean, z następującym korespondencji między ich metod:Pobieranie statystyk pamięci w Javie: Runtime vs. MemoryMXBean

memoryMxBean.getHeapMemoryUsage().getUsed()  <=> runtime.totalMemory() - runtime.freeMemory() 
memoryMxBean.getHeapMemoryUsage().getCommitted() <=> runtime.totalMemory() 
memoryMxBean.getHeapMemoryUsage().getMax()  <=> runtime.maxMemory() 

Z wyjątkiem dodatkowej spoza sterty informacji zużycie pamięci dostarczonych przez MemoryMXBean, czy są jakieś powody, dla których powinienem preferować go w Runtime lub na odwrót?

Odpowiedz

2

Brak. Dostęp do komponentów bean JMX można uzyskać zewnętrznie i jest przeznaczony dla narzędzi zarządzania, takich jak hyperic (lub nawet nagios). W każdym razie przekazałby to programowi Runtime.

+0

Tak. Obie drogi zwracają dokładnie taką samą wartość dla używanej pamięci. – huljas

Powiązane problemy