Из того, что я знаю, начиная с JDK 8, PermGen будет страницей в истории java. Все хорошо и весело... но как будет выглядеть новая макет памяти? Будет ли это влиять на GC на новой платформе?
JDK 8 Макет памяти и сбор мусора
Ответ 1
PermGen заменен на Metaspace в Oracle/Sun JDK8, что очень похоже. Основное различие заключается в том, что Metaspace может расширяться во время выполнения.
Ответ 2
Это когда есть пергген
После введения Metaspace
Определенно, в GC на Java 8 есть много улучшений. Вы можете проверить этот postoverflow post
В Metaspace для отображения метаданных выделяются пространства с множественными адресами виртуальной памяти, а распределение (в кусках) - для каждого загрузчика классов в зависимости от типа загрузчика классов и его живучести. Куски возвращаются в список свободных кусков, а также виртуальные пространства памяти, возвращаемые при опустошении.
Преимущество GC будет
- Во время полной коллекции метаданные к указателям метаданных не проверяются
- Было удалено много сложного кода (особенно для CMS) для сканирования метаданных.
- Metaspace содержит несколько указателей на кучу Java.
- Отсутствие затрат на уплотнение для метаданных
- Уменьшает сканирование корневого каталога (без сканирования словаря VM загруженных классов и других внутренних хэш-таблиц).