2015-01-23 3 views
4

HERE, автор говорит, чтоСтрока пул создается в PermGen области или объекта области Heap

3) Строка пул создается в PermGen области Heap, вывоз мусора может произойти в завивки пространстве, но зависит от того, JVM для JVM. Кстати от Обновление JDK 1.7, пул строк перемещается в область кучи, где создаются объекты .

Есть ли какая-то конкретная причина, почему это делается? Я не могу найти ни одного онлайн. И каковы последствия?

+1

Не ответ для этого, но может быть актуальным: из Java 8 больше нет пространства PermGen. – meskobalazs

+0

Куча легче очищать, контролировать и настраивать, чем Пермский ген или Метаспаз. –

ответ

7

Перехода к Метапространству был необходим, так как PermGen было очень трудно настроиться.

Кроме того, это было трудно размер PermGen, так как размер зависел от многих факторов, таких как общее число классов, размер постоянных бассейнов, размер методов и т.д.

Кроме того, каждые сборщик мусора в HotSpot нуждается в специальном коде для работы с метаданными в PermGen. Отсоединение метаданных от PermGen не только позволяет осуществлять плавное управление Metaspace, но также позволяет такие улучшения, как упрощение полных сборщиков мусора и последующее одновременное децентрализование метаданных класса.

5

В Java 6 дней все интернированные строки были сохранены в PermGen - фиксированная часть кучи, в основном используемая для хранения загруженных классов и пула строк. Помимо явно интернированных строк, пул строк PermGen также содержал все литеральные строки, ранее используемые в вашей программе.

Самая большая проблема с пулом строк в Java 6 была его местоположение - PermGen. PermGen имеет фиксированный размер и не может быть расширен во время выполнения. Вы можете установить его с помощью опции -XX: MaxPermSize = N.

инженеры внесли чрезвычайно важное изменение в логику объединения строк в Java 7 - пул строк был перемещен в кучу. Это означает, что вы больше не ограничены отдельной областью памяти фиксированного размера. Все строки теперь расположены в куче, как и большинство других обычных объектов, что позволяет вам управлять только размером кучи во время настройки вашего приложения.

Ref: http://java-performance.info/string-intern-in-java-6-7-8/

 Смежные вопросы

  • Нет связанных вопросов^_^