Я знаю, що таке PermGen, для чого він використовується, чому він не працює, як його збільшити і т.д.
Що я не знаю, це те, на що насправді виступає PermGen. Постійний ... Ген ... щось?
Хтось знає, що насправді означає PermGen?
Я знаю, що таке PermGen, для чого він використовується, чому він не працює, як його збільшити і т.д.
Що я не знаю, це те, на що насправді виступає PermGen. Постійний ... Ген ... щось?
Хтось знає, що насправді означає PermGen?
Відповіді:
Постійне покоління. Деталі, звичайно, конкретні для впровадження.
Якщо коротко, він містить об'єкти Java, пов'язані з класами та інтернованими рядками. У впровадженні клієнта Sun із включеним спільним доступом classes.jsa
карта пам'яті відображається для формування початкових даних з приблизно половиною лише для читання та половиною копіювання на запис.
Об'єкти Java, які є лише старими, зберігаються в поколінні Tenured.
PermGen використовується JVM для проведення завантажених класів. Ви можете збільшити його за допомогою:
-XX:MaxPermSize=384m
якщо ви використовуєте Sun JVM або OpenJDK.
Отже, якщо у вас є OutOfMemoryException: PermGen, вам потрібно зробити PermGen більшим, або у вас можуть виникнути проблеми з завантажувачем класів.
Постійне покоління. Додаткову інформацію про сміттєзбірник див. У посібнику з налаштування java GC .
Насправді не пов'язане з оригінальним питанням, але, можливо, хтось вважатиме це корисним. PermGen - це дійсно область пам’яті, де Java зберігала свої класи. Отже, багато хто з нас натрапили на OOM в PermGen, якби було, наприклад, багато занять.
Оскільки Java 8, область PermGen була замінена областю MetaSpace, яка є більш ефективною і необмеженою за замовчуванням (а точніше - обмежена кількістю рідної пам'яті, залежно від 32 або 64 біт jvm та наявності віртуальної пам'яті ОС). Однак можна налаштувати його деякими способами, наприклад, вказавши максимальну межу для області. Ви можете знайти більше корисної інформації в цій публікації в блозі .
PermGen означає постійне покоління .
Ось короткий розмит щодо DDJ
Permgen означає постійне покоління. Це одна з областей пам'яті JVM. Це частина Heap з фіксованим розміром, використовуючи прапор MaxPermSize.
Чому назва "PermGen"?
Цей пермген був названий в перші дні Яви. Пермгенська мережа зберігає всі метадані завантажених класів. Але проблема полягає в тому, що після завантаження класу він залишатиметься в JVM до відключення JVM. Тож назва permgen вибирає саме це. Але пізніше динамічне завантаження класів увійшло до зображення, але назва не змінилася. Але з Java 8 вони також вирішили це питання. Тепер permagen був перейменований у MetaSpace з динамічним розміром пам'яті.