Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: metaspace, permgen

Что такое Metaspace и чем он отличается от PermGen?

Вопрос проверяет понимание управления памятью JVM и эволюции механизма хранения метаданных классов.

Короткий ответ

Metaspace — это область памяти JVM для хранения метаданных классов, появившаяся вместо PermGen. В отличие от PermGen, Metaspace использует нативную память, а не heap. Это снижает риск OutOfMemoryError из-за фиксированного размера. Размер Metaspace может динамически расти. Управление стало более гибким и предсказуемым.

Длинный ответ

В JVM существуют специальные области памяти для хранения служебной информации о классах.

Что такое PermGen

PermGen (Permanent Generation) — это область памяти в heap, где ранее хранились:

  • метаданные классов

  • информация о методах

  • пул строк (частично)

Основные проблемы PermGen:

  • фиксированный размер

  • частые OutOfMemoryError

  • сложная настройка под разные приложения

Что такое Metaspace

Metaspace — это замена PermGen, начиная с Java 8.

Ключевые особенности:

  • использует нативную память

  • не входит в heap

  • может динамически расширяться

  • освобождает память при выгрузке классов

Ключевые отличия

Основные различия заключаются в подходе к управлению памятью:

  • PermGen ограничен заранее

  • Metaspace растет по мере необходимости

  • Metaspace легче диагностировать и настраивать

Управление размером Metaspace

Размер можно ограничить параметрами:

  • -XX:MetaspaceSize

  • -XX:MaxMetaspaceSize

Вывод: Metaspace устранил ключевые ограничения PermGen и сделал управление метаданными классов более надежным.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#metaspace

#permgen

Подпишись на Java Developer в телеграм