Постоянное поколение используется для хранения отражений самой виртуальной машины, таких как объекты класса и объекты метода. Эти отражающие объекты выделяются непосредственно в постоянное поколение, и оно измеряется независимо от других поколений. Как правило, размер этого поколения можно игнорировать, потому что размер по умолчанию является адекватным. Однако программам, которые загружают много классов, может потребоваться большее постоянное поколение.
PermSize - это дополнительное отдельное пространство кучи к значению -Xmx, установленному пользователем. Раздел кучи, зарезервированный для постоянного поколения, содержит все отражающие данные для JVM. Вы должны соответствующим образом изменить размер, если ваше приложение динамически загружает и выгружает много классов, чтобы оптимизировать производительность. По сути, в куче хранятся объекты, а в хранилище хранится информация об объектах внутри него. Следовательно, чем больше куча, тем больше должна быть пермьен.
По умолчанию MaxPermSize будет 32 МБ для -client и 64 МБ для -server. Однако, если вы не установите оба параметра PermSize и MaxPermSize, общая куча не увеличится, если в этом нет необходимости. Когда вы устанавливаете PermSize и MaxPermSize, например, 192 МБ, дополнительное пространство кучи будет выделено при запуске и останется выделенным.