J'essaie de diagnostiquer une erreur java.lang.OutOfMemoryError: PermGen Space
lors de l'exécution sur la JVM de Hotspot de Sun, et je voudrais savoir combien d'espace PermGen mon programme utilise à divers points. Existe-t-il un moyen de trouver cette information par programme?Comment puis-je savoir par programme mon utilisation de l'espace PermGen?
25
A
Répondre
38
Vous pouvez utiliser quelque chose comme ceci:
Iterator<MemoryPoolMXBean> iter = ManagementFactory.getMemoryPoolMXBeans().iterator();
while (iter.hasNext())
{
MemoryPoolMXBean item = iter.next();
String name = item.getName();
MemoryType type = item.getType();
MemoryUsage usage = item.getUsage();
MemoryUsage peak = item.getPeakUsage();
MemoryUsage collections = item.getCollectionUsage();
}
Cela vous donnera tous les types de mémoire. Vous êtes intéressé par le type "Perm Gen".
3
Merci, cela fonctionne. Je prends le MemoryPoolMXBean où name.equalsIgnoreCase ("Perm Gen"). –
Informations nécessaires, Merci kgiannakakis. – vissu