Ликвидации PermGen в JDK 8



Я установил JDK 8 и пытаюсь запустить Eclipse. Я получаю следующее предупреждение:



Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0


каковы причины игнорирования этого аргумента?

628   6  

6 ответов:

причины игнорирования этих аргументов-постоянное поколение было удалено в HotSpot для JDK8 из-за следующих недостатков

  • фиксированный размер при запуске – сложно настроиться.
  • внутренние типы точек доступа были объектами Java: могли перемещаться с полным GC, непрозрачными, не сильно типизированными и трудно отлаживаемыми, необходимыми мета-метаданными.
  • упрощение полных коллекций: специальные итераторы для метаданных для каждого коллектора
  • хотите освободить данные категории одновременно и не во время GC pause
  • включить будущие улучшения, которые были ограничены PermGen.

пространство постоянного поколения (PermGen) полностью удалено и заменено новым пространством под названием Metaspace. Последствия удаления PermGen - это то, что очевидно Аргументы PermSize и MaxPermSize JVM игнорируются и вы никогда не получите java.ленг.OutOfMemoryError: PermGen ошибка.

преимущества MetaSpace

  • воспользуйтесь свойством спецификации языка Java: классы и связанные с ними жизни метаданных соответствуют классу загрузчика
  • в зону хранения затяжелителя-Metaspace
  • только линейное распределение
  • нет индивидуальной рекультивации (за исключением Переопределений и сбоя загрузки класса)
  • нет GC сканирования или уплотнения
  • нет переезде для metaspace объекты

Настройки Metaspace

максимальный размер метапространства может быть установлен с помощью флага-XX: MaxMetaspaceSize, а значение по умолчанию не ограничено, что означает, что только ваша системная память является пределом. Флаг настройки-XX: MetaspaceSize определяет начальный размер метапространства если этот флаг не указан, Метапространство будет динамически изменять размер в зависимости от требований приложения во время выполнения.

изменение включает другие оптимизации и особенности в будущем

  • совместное использование данных класса приложений
  • оптимизация молодой коллекции, выгрузка класса G1
  • уменьшение размера метаданных и внутренние проекты JVM footprint

также улучшена производительность GC. более подробно

Это одна из новых функций Java 8, часть предложения по улучшению JDK 122:

удалите постоянное поколение из точки доступа JVM и, таким образом, необходимо настроить размер постоянного поколения.

список всех JEP, которые будут включены в Java 8, можно найти на страница JDK8 milestones.

пространство постоянного поколения (PermGen) полностью удалено и заменено новым пространством под названием Metaspace.Последствия удаления PermGen заключается в том, что, очевидно, Аргументы PermSize и MaxPermSize JVM игнорируются, и вы никогда не получите java.lang.OutOfMemoryError: ошибка PermGen. JDK 8 HotSpot JVM теперь использует собственную память для представления метаданных класса и называется Metaspace.Подробнее>>

потому что пространство PermGen было удалено. Управление памятью немного изменилось.

http://java.dzone.com/articles/java-8-permgen-metaspace

пространство PermGen заменяется Метапространством в Java 8. Аргументы PermSize и MaxPermSize JVM игнорируются, и выдается предупреждение, если оно присутствует при запуске.

большинство выделений для метаданных класса теперь выделяются из собственной памяти. * Классы, которые использовались для описания метаданных класса, были удалены.

основное различие между старым PermGen и новым MetaSpace заключается в том, что вам не нужно обязательно определять верхний предел использования памяти. Вы можете сохранить Метапространство предел пространства неограничен. Таким образом, когда использование памяти увеличивается, вы не получите ошибку OutOfMemoryError. Вместо этого зарезервированная собственная память увеличивается до полного заполнения увеличения использования памяти.

вы можете определить максимальный предел пространства для Метапространства, а затем он выбросит OutOfMemoryError : Metadata space. Таким образом, важно определить этот предел осторожно, чтобы мы могли избежать потери памяти.

реализация JVM Oracle для Java 8 избавилась от модели PermGen и заменила ее на Metaspace.

Comments

    Ничего не найдено.