Я знаю, что такое PermGen, для чего он используется, почему не работает, как его увеличить и т. д.
Я не знаю, что на самом деле означает PermGen. Постоянно . Ген . что-то?
Кто-нибудь знает, что на самом деле означает PermGen?
Комментарии (1)
[Хорошее описание] [1] от парня, который много знает о внутреннем устройстве GC. Кстати, в его блоге есть много полезной информации о сборке мусора. [1]: blogs.oracle.com/jonthecollector/entry/…
26.11.2008 00:30
Друзья, прочитавшие предыдущую статью, уже узнали, как создать и запустить проект в IDE IntelliJ IDEA. В этой статье мы рассмотрим типы данных и.
Merge sort — самый популярный алгоритм сортировки, основанный на принципе алгоритма «разделяй и властвуй».
Футбол. Для многих людей, живущих на земле, эта игра — больше, чем просто спорт. И эти люди всегда мечтают стать футболистом или менеджером. Но, к.
В Java исключение — это событие, возникающее во время выполнения программы, которое нарушает нормальный ход выполнения инструкций программы. Когда.
Почему Minetest лучше, чем Minecraft? 7 плюсов Minetest, которые превосходят плюсы Minecraft
Ищете лучшую компанию по разработке спортивных приложений? Этот список, несомненно, облегчит вашу работу!
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы.
Перейти к ответу Данный вопрос помечен как решенный
Ответы 8
Постоянное поколение. См. Java Руководство по настройке ГХ для получения более подробной информации о сборщике мусора.
26.11.2008 00:32
26.11.2008 00:33
Если я правильно помню, gen означает поколение, как в сборщике мусора поколений (который обрабатывает более молодые объекты иначе, чем объекты среднего возраста и «постоянные» объекты). Принцип локальности предполагает, что в первую очередь будут уничтожены недавно созданные объекты.
26.11.2008 00:34
PermGen означает Постоянное поколение.
Вот краткая аннотация на DDJ
26.11.2008 00:34
Ответ принят как подходящий
Постоянное поколение. Детали, конечно, зависят от конкретной реализации.
Вкратце, он содержит объекты Java, связанные с классами и интернированными строками. В клиентской реализации Sun с включенным совместным использованием classes.jsa отображается в памяти для формирования исходных данных, причем половина из них предназначена только для чтения, а половина — для копирования при записи.
Просто старые объекты Java сохраняются в Tenured Generation.
«В JDK 7 интернированные строки больше не выделяются в постоянной генерации кучи Java»: oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
А в JDK 8 вообще нет постоянного поколения! Приятно наблюдать, как этот ответ менялся с годами.
Tom Hawtin — tackline
26.11.2008 14:57
PermGen используется JVM для хранения загруженных классов. Вы можете увеличить его, используя:
Если вы используете Sun JVM или OpenJDK.
Поэтому, если вы получаете OutOfMemoryException: PermGen, вам нужно либо увеличить PermGen, либо у вас могут возникнуть проблемы с загрузчиком классов.
Baritone. Гайд | Minecraft
Какой ответ был принят на момент публикации этого комментария? В настоящее время принятый ответ (Вот этот, от «Tom Hawtin — tackline») мне кажется точным. Может быть имеет смысл отредактировать свой комментарий, чтобы он не заставил людей не доверять текущему принятому ответу?
26.11.2008 17:36
Не совсем соответствует исходному вопросу, но, возможно, кому-то это пригодится. PermGen действительно является областью памяти, где Java хранила свои классы. Итак, многие из нас сталкивались с OOM в PermGen, если бы классов было, например, много.
Начиная с Java 8, область PermGen была заменена областью MetaSpace, которая более эффективна и по умолчанию не ограничена (точнее — ограничена объемом собственной памяти, в зависимости от 32- или 64-разрядной виртуальной памяти jvm и ОС). Однако можно настроить его некоторыми способами, например, указав максимальный предел для области. Вы можете найти более полезную информацию в это сообщение в блоге.
17.06.2014 15:51
Пермген означает «постоянное поколение». Это одна из областей памяти JVM. Это часть кучи с фиксированным размером с помощью флага MaxPermSize.
Почему название «ПермГен»?
Этот перманент был назван в ранние дни Явы. Сеть Permgen хранит все метаданные загруженных классов. Но проблема в том, что после загрузки класса он остается в JVM до выключения JVM. Так что имя permgen — это выбор для этого. Но позже появилась динамическая загрузка классов, но название не изменилось.
Но с помощью Java 8 они также решили эту проблему. Теперь пермаген был переименован в MetaSpace с динамическим размером памяти.
12.08.2018 10:40
Другие вопросы по теме
Как мне узнать, что есть в постоянном поколении
Как создать хорошую строку пространства permgen на Java?
Работа с ошибкой «java.lang.OutOfMemoryError: PermGen space»
Ошибка PermGen Space при запуске сборки Maven
Как очистить PermGen в Tomcat без перезапуска
Каким должен быть размер кучи JVM (Xms Xmx) для 64-разрядной версии JDK8 в Linux с физической памятью 16 ГБ ОЗУ и 8 ЦП
Источник: reddeveloper.ru
Что такое permgen в minecraft
В этом небольшом руководстве мы рассмотрим разницу между областями памяти PermGen и Metaspace в Java среде. Начиная с Java 8, Metaspace заменил PermGen, привнеся некоторые существенные изменения.
PermGen (Permanent Generation) — это специальное место в куче, отделенное от основной памяти.
В PermGen виртуальная машина хранит метаданные загруженных классов. Также здесь находятся всё статическое содержимое приложения, переменные примитивных типов и ссылки на статические объекты.
Более того PermGen хранит данные о байткоде и JIT информацию. До Java 7 пул строк также являлся частью PermGen.
По умолчанию, максимальный размер этой области памяти для 32-х битной JVM равен 64 Мб, а для 64-х битной версии — 82 Мб. Однако, вы можете изменять эти значения, используя следующие параметры JVM:
- -XX:PermSize=[размер] для установки минимального размера PermGen области
- -XX:MaxPermSize=[размер] для установки максимального размера
Из-за своего ограниченного размера, PermGen является причиной возникновения ошибки java.lang.OutOfMemoryError: PermGen space. Проще говоря, загрузчики классов не обрабатываются сборщиком мусора должным образом, в результате чего появляются утечки памяти. Чаще всего это происходит при создании новых загрузчиков.
Эта область памяти была полностью удалена в JDK 8.
Metaspace – новая область памяти, появившаяся в 8 версии Java и заменившая устаревшую PermGen. Основное их отличие заключается в способе распределения памяти.
По умолчанию, Metaspace увеличивается автоматически. Однако и здесь у нас есть возможность управления памятью:
- При помощи MetaspaceSize и MaxMetaspaceSize можно задать границы Metaspace области.
- MinMetaspaceFreeRatio — минимальный зарезервированный размер памяти для метаданных классов после сборки мусора. Выражается в процентах от общего размера Metaspace области.
- MaxMetaspaceFreeRatio — максимальный зарезервированный размер памяти для метаданных классов после сборки мусора. Используется для предотвращения сокращения объема пространства, заполнение которого вызывает сборку мусора. Также выражается в процентах от общего размера Metaspace.
В результате появления Metaspace, процесс очистки памяти получил некоторые преимущества. Теперь сборщик мусора автоматически удаляет из памяти ненужные классы, когда емкость, выделенная для хранения метаданных, достигает максимального значения. Вместе с этим, уменьшилась вероятность получения ошибки OutOfMemoryError.
Несмотря на все плюсы, нам все равно необходимо контролировать и, при необходимости, настраивать Metaspace чтобы избежать утечек памяти.
Источник: topjava.ru
Что на самом деле означает PermGen?
Я знаю, что такое PermGen, для чего он используется, почему он терпит неудачу, как его увеличить и т. д.
чего я не знаю, так это то, что на самом деле означает PermGen. Постоянный. Поколения. что-то?
кто-нибудь знает, что на самом деле означает PermGen?
автор: SCdF
8 ответов
Постоянной Генерации. Детали, конечно, конкретны.
кратко, он содержит объекты Java, связанные с классами и интернированными строками. В клиентской реализации Sun с sharing on, classes.jsa отображается память для формирования исходных данных, примерно с половиной только для чтения и половиной копирования при записи.
Java-объекты, которые просто старые хранятся в штатный поколения.
автор: Tom Hawtin — tackline
PermGen используется JVM для хранения загруженных классов. Вы можете увеличить его, используя:
Если вы используете Sun JVM или OpenJDK.
поэтому, если вы получаете OutOfMemoryException: PermGen, вам нужно либо сделать PermGen больше, либо у вас могут возникнуть проблемы с загрузчиком классов.
автор: bajafresh4life
Постоянной Генерации. См. java руководство по настройке GC для получения более подробной информации о сборщике мусора.
автор: Dustin
не очень связанный матч с оригинальным вопросом, но может быть кто-то найдет его полезным. PermGen действительно является областью памяти, где Java использовала свои классы. Так, многие из нас сталкивался с нехваткой памяти в PermGen, если там были, например много классов.
начиная с Java 8, область PermGen была заменена областью MetaSpace, которая является более эффективной и неограниченной по умолчанию (или точнее-ограниченной объемом собственной памяти, в зависимости от 32 или 64 бит jvm и ОС доступность виртуальной памяти) . Однако можно настроить его некоторым образом, например, указав максимальный предел для области. Вы можете найти более полезную информацию в этот блог.
Источник: askdev.ru