Преимущества MemoryPoolMXBean.getUsage () перед Runtime.freeMemory () - PullRequest
2 голосов
/ 12 мая 2009

У меня есть требование собирать статистику JVM через регулярные промежутки времени, используя. Позже мне нужно зарегистрировать доступную память / свободную память JVM, использованную память, общий объем памяти.

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

  1. ManagementFactory.getMemoryPoolMXBeans () и итерация по каждому MemoryPoolMXBean и, наконец, сбор статистики с помощью MemoryPoolMXBean.getUsage ().

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

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

1 Ответ

2 голосов
/ 12 мая 2009

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

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

.

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

...