Как я программно узнаю о своем использовании пространства в пространстве PermGen?

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

Ответ 1

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

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

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