Я знаю, что такое 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