2009-05-12 2 views
2

У меня есть требование собирать статистику JVM с регулярными интервалами времени. Позже мне нужно зарегистрировать доступную память/свободную память JVM, используемую память, общую память.Преимущества MemoryPoolMXBean.getUsage() над Runtime.freeMemory()

Ниже приведены два варианта, о которых я думал.

  1. ManagementFactory.getMemoryPoolMXBeans() и перебор каждого MemoryPoolMXBean и, наконец, сбор статистических данных с использованием MemoryPoolMXBean.getUsage().

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

Какой самый лучший способ для сбора статистики. используя MemoryPoolMXBean.getUsage() или Runtime Class.

ответ

2

Это примерно , слушая на использование вашей памяти в течение всего жизненного цикла приложения, вместо того, чтобы вызывать информацию в разных местах вашего приложения.

Как уже упоминалось в Memory notifications in Java, у вас есть интерактивный способ контролировать память, так как вы можете добавить уведомление Слушатель к вашему MemoryMXBean.

Так что для пунктуального очень местного чека, Runtime может быть достаточно для глобального мониторинга, MemoryMXBeans - это путь.

Смежные вопросы