Вопрос

Я знаю, что такое PermGen, для чего он используется, почему он выходит из строя, как его увеличить и т.д.

Чего я не знаю, так это того, что на самом деле означает PermGen.Постоянный...Gen...что-то?

Кто-нибудь знает, что на самом деле означает PermGen?

Это было полезно?

Решение

Постоянное поколение. Детали, конечно, зависят от реализации.

Вкратце, он содержит объекты Java, связанные с классами и интернированными строками. В клиентской реализации Sun с включенным совместным использованием classes.jsa отображена в памяти для формирования начальных данных, причем примерно половина из них предназначена только для чтения и наполовину копируется при записи.

Java-объекты, которые являются просто старыми, хранятся в поколении Tenured.

Другие советы

PermGen используется JVM для хранения загруженных классов.Вы можете увеличить его с помощью:

-XX:MaxPermSize=384m

если вы используете Sun JVM или OpenJDK.

Итак, если вы получите исключение OutOfMemoryException:PermGen вам нужно либо увеличить PermGen, либо у вас могут возникнуть проблемы с загрузчиком классов.

Постоянное поколение. См. руководство по настройке ГХ в java . на сборщик мусора.

Не совсем соответствует исходному вопросу, но может кто-то найдет его полезным. PermGen - это область памяти, в которой Java хранит свои классы. Итак, многие из нас сталкивались с OOM в PermGen, если было, например, много классов.

Начиная с Java 8, область PermGen была заменена областью MetaSpace, которая более эффективна и не ограничена по умолчанию (или, точнее, ограничена объемом встроенной памяти, в зависимости от 32 или 64-битной jvm и доступности виртуальной памяти ОС) , Однако можно настроить его несколькими способами, например, указав максимальный предел для области. Вы можете найти более полезную информацию в этом сообщении в блоге .

PermGen расшифровывается как Постоянное поколение .

Вот краткое описание в DDJ

Если я правильно помню, gen обозначает поколение, как в сборщике мусора поколений (который обрабатывает более молодые объекты, чем объекты среднего возраста и «постоянные» объекты). Принцип локальности предполагает, что недавно созданные объекты будут уничтожены первыми.

Permgen означает постоянное поколение. Это одна из областей памяти JVM. Это часть кучи с фиксированным размером с использованием флага MaxPermSize.

Почему название " PermGen "

Этот permgen был назван в первые дни Java. Сеть Permgen хранит все метаданные загруженных классов. Но проблема в том, что после загрузки класса он останется в JVM до завершения работы JVM. Так что имя Permgen выбрано для этого. Но позже появилась динамическая загрузка классов, но имя не изменилось. Но с Java 8 они также решили эту проблему. Теперь permagen был переименован в MetaSpace с динамическим объемом памяти.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top