Подтвердить что ты не робот

JDK 8 Макет памяти и сбор мусора

Из того, что я знаю, начиная с JDK 8, PermGen будет страницей в истории java. Все хорошо и весело... но как будет выглядеть новая макет памяти? Будет ли это влиять на GC на новой платформе?

4b9b3361

Ответ 1

PermGen заменен на Metaspace в Oracle/Sun JDK8, что очень похоже. Основное различие заключается в том, что Metaspace может расширяться во время выполнения.

Ответ 2

Это когда есть пергген enter image description here

После введения Metaspace enter image description here

Определенно, в GC на Java 8 есть много улучшений. Вы можете проверить этот postoverflow post

В Metaspace для отображения метаданных выделяются пространства с множественными адресами виртуальной памяти, а распределение (в кусках) - для каждого загрузчика классов в зависимости от типа загрузчика классов и его живучести. Куски возвращаются в список свободных кусков, а также виртуальные пространства памяти, возвращаемые при опустошении.

Преимущество GC будет

  • Во время полной коллекции метаданные к указателям метаданных не проверяются
  • Было удалено много сложного кода (особенно для CMS) для сканирования метаданных.
  • Metaspace содержит несколько указателей на кучу Java.
  • Отсутствие затрат на уплотнение для метаданных
  • Уменьшает сканирование корневого каталога (без сканирования словаря VM загруженных классов и других внутренних хэш-таблиц).

Подробнее здесь