Como eu programaticamente descobrir meu uso do espaço PermGen?
-
22-08-2019 - |
Pergunta
Eu estou tentando diagnosticar um erro java.lang.OutOfMemoryError: PermGen Space
quando executado no Hotspot JVM da Sun, e gostaria de saber quanto espaço PermGen meu programa está usando em vários pontos. Existe uma maneira de descobrir esta informação de programação?
Solução
Você pode usar algo como isto:
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();
}
Isto lhe dará todos os tipos de memória. Você está interessado no tipo "Perm Gen".
Outras dicas
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow