Как программно определить использование пространства PermGen? - PullRequest
25 голосов
/ 30 марта 2009

Я пытаюсь диагностировать ошибку java.lang.OutOfMemoryError: PermGen Space при работе на Sun Hotspot JVM и хотел бы знать, сколько места PermGen использует моя программа в различных точках. Есть ли способ узнать эту информацию программно?

Ответы [ 2 ]

38 голосов
/ 30 марта 2009

Вы можете использовать что-то вроде этого:

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();
}

Это даст вам все виды памяти. Вас интересует тип "Пермский генерал".

3 голосов
/ 30 марта 2009
...