2009-05-12 4 views
2

J'ai besoin de collecter des statistiques d'une machine virtuelle Java à intervalles de temps réguliers en utilisant. Plus tard, j'ai besoin de connecter la mémoire disponible de la JVM/mémoire libre, la mémoire utilisée, la mémoire totale.Avantages de MemoryPoolMXBean.getUsage() sur Runtime.freeMemory()

Voici les deux options auxquelles j'ai pensé.

  1. ManagementFactory.getMemoryPoolMXBeans() et itérer chaque MemoryPoolMXBean et enfin la collecte des statistiques à l'aide MemoryPoolMXBean.getUsage().

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

Quelle est la meilleure façon de recueillir les statistiques. en utilisant MemoryPoolMXBean.getUsage() ou Runtime Class.

Répondre

2

Il s'agit d'environ en écoutant à votre utilisation de la mémoire pendant le cycle de vie de toute l'application au lieu de rechercher des informations à divers endroits dans votre application.

Comme mentionné dans Memory notifications in Java, vous avez un interactif moyen de surveiller la mémoire puisque vous pouvez ajouter un écouteur de notification à votre MemoryMXBean. Donc, pour une vérification ponctuelle très locale, Runtime peut suffire, pour la surveillance globale, MemoryMXBeans est le chemin à parcourir.

Questions connexes