Интервьюер, структура памяти Java8 виртуальной машины Java изменилась, генерация постоянного Метапространство

В статье « Память структуры объяснить JVM » мы описываем Java7 предыдущие структуры JVM памяти, но JVM в Java8 , а затем в структурах памяти медленно изменяется. Как интервьюер , если вы не знаете, процесс интервью не какое - то невежество еще раз? Как интервьюер, если знать об этих изменениях, в свою очередь , станет изюминкой интервью.

Если поиск конфигурация памяти JVM в сети, 90% может быть найдена в Java7 и предыдущую карту памяти, эта статья будет о структуре памяти утонченности JVM снова, глубоком пониманием внутренних изменений после Java8. Смотреть сейчас реализовать преимущества «программы New Horizons» на общедоступный номер бара. Здесь вы можете постоянно обновлять свои знания и понимание.

JVM структура памяти утонченность

Тогда посмотрите на « Структуру памяти JVM подробной описания » структура памяти диаграммы.

Структура памяти JVM

Для получения более подробных объяснений, мы ссылаемся на этот график для дальнейшей оптимизации настройки. Для java7 и предыдущих версий уточнения.

Структура памяти JVM

Смотрите некоторые изменения? Heap и область метод связаны друг с другом, но это не говорит, что куча и область метод вместе, они все еще разделены логически. Но физически говоря, они также непрерывный блок памяти. Другими словами, метод и площадь перед Эдема, и мы говорили о старых-х непрерывен.

Структура памяти JVM

Прежде чем продолжить работу по-прежнему, мы сначала понять два понятия: спецификации и реализации.

Спецификация и реализация

Есть специальный «Java Virtual Machine Specification» для реализации виртуальной машины Java При условии соблюдения норм, разные производители имеют различные реализации виртуальной машины. Как и определение интерфейса, чем процесс развития, конкретный интерфейс может быть реализован в соответствии с различными потребностями бизнеса.

PS: У меня есть необходимость взглянуть на "Java Virtual Machine Specification," Ни один государственный концерн "Программа New Horizons", не отвечает "002" для Java SE Virtual Machine Specification PDF версии 7.

Как правило, мы используем Java SE обеспечивается Sun JDK и OpenJDK, которая является наиболее широко используемой версией. В то время как VM использует версию HotSpot VM. При нормальных обстоятельствах, это относится к версии HotSpot мы говорим о виртуальной Java-машине.

Постоянное поколение (PermGen)

После того, как вы понимаете выше спецификации и реализации, понимание взглянуть на концепции «постоянного поколения (Permanet поколения, также известный как PermGen)». Привыкшие к виртуальной машине HotSpot на разработку, развертывание, программистов, многие из них готовы к методу области под названием постоянных поколений.

По существу, эти два не эквивалентны, так как только область поколений ОЙ Точки распространяется на способ, или способ достижения области постоянного поколения. На других виртуальных машинах не бессрочная концепция поколений. Этот метод область является нормой, является достижение постоянного имени Hotspot проводимого против спецификации.

После понимания вышеуказанных понятий, мы строим Java7 и предыдущие версии кучного и метод области, то она меняется.

Структура памяти JVM

Java7 и повторить предыдущий вариант Hotspot области находится в постоянном способе генерации. В то же время, и постоянная генерация стека изолированы друг от друга, но они используют физическую память непрерывно.

Постоянные поколения сбор мусора и поставляются в комплекте с старым годом, поэтому независимо от того, кто полон, запустит сборку мусора и постоянное поколение старости.

Тем не менее, некоторые данные хранятся постоянно в Java7 поколении начали смещаться в Java Heap или в родной памяти. Например, опорный символ (символы) был переведен в родной памяти; строка постоянной пул (интернированные строки) был переведен в Java Heap; статическая переменная класса (класс статика) был переведен в Java Heap.

Затем, в Java8, времена изменились, Hotspot отменены постоянно поколения. На самом деле стал постоянным от имени постоянной памяти. Параметры Постоянные поколения -XX: PermSize и -XX: MaxPermSize также потерпит неудачу.

Элемент пространства (Метапространство)

Для Java8, HotSpots навсегда отменены поколения, это не является не метод округа от него? Конечно, нет, область метода просто спецификация, но его реализация изменилась.

В Java8, элемент пространство (Метапространство) на сцене, присутствует в области методы элемента пространства (Метапространство). В то же время, стек пространство больше не непрерывный элемент, и присутствует в локальной памяти (родной памяти).

Структура памяти JVM

Локальная память (родная память), также известная как C-Heap, это процесс, используемый для самой виртуальной машины Java. Когда отсутствие Java Heap пространства вызовет GC, но Native памяти не хватает места, но не вызовет GC.

Корректировки Java8, мы еще раз рисунок на корректировку структуры памяти.
Структура памяти JVM

Размерное пространство существует в локальной памяти, локальная память означает, что достаточно долго, он не будет, как представляется постоянная генерация: Эта ошибка «java.lang.OutOfMemoryError PermGen пространства». Смотрите изображение выше области методов, не «раздувать».

По умолчанию проезжей части пространства неограниченного использование локальной памяти, но для того, чтобы не сделать так набухают, JVM также параметры, используемые для ограничения использования этого.

  • -XX: начальная квота MetaspaceSize, класс метаданных, и в байтах, то это значение будет достигнуто будет инициировать сбор мусора типа разгрузки, в то время как GC будет корректировать значение: Если вы выпускаете много места, то целесообразно, чтобы уменьшить значение, если выйдет очень мало места, то не больше, чем MaxMetaspaceSize (если вы установите его) целесообразно увеличить это значение.
  • -XX: MaxMetaspaceSize, максимальное пространство, которое может быть выделено для класса метаданных. По умолчанию нет предела.
  • -XX: MinMetaspaceFreeRatio, после того, как ГЙ, минимальное количество оставшегося пространства, в процентах Метапространства сбора мусора, чтобы уменьшить пространство, выделенное для результата метаданных класса.
  • -XX: MaxMetaspaceFreeRatio, после того, как GC, самый большой процент Метапространства оставшегося пространства емкости, сокращение сбора мусора, чтобы освободить место для метаданных класса вызвали.

Почему заменены постоянным имени

Подумайте о том, почему использование юаней заменить постоянное место от имени?

Якобы, чтобы избежать исключений ОЫХ. Потому что, как правило, используют PermSize и MaxPermSize установить размер постоянной генерации определяет верхний предел постоянного поколения, но не всегда знают, сколько должны быть установлены вправо, если значение по умолчанию легко встретить ошибки ООМ.

При использовании элемента пространства, метаданные могут быть загружены так же, как MaxPermSize больше не контролируются и управляются системой реального пространства, доступного.

Глубже причина или объединить JRockit и HotSpot код, JRockit никогда не называл постоянного поколения, эксплуатации и техническому персоналу не нужно разработать набор постоянного размера поколения, но работает хорошо. В то же время, не волнуйтесь, оперативные проблемы с производительностью, и в крышке теста, программы и работает скорость менее чем на 1%, но эту потерю производительности в обмен на большую безопасность.

резюме

После объяснения эволюции и выше, не является более глубоким пониманием структуры памяти виртуальной машины Java? И больше, чем интервьюер может общаться на некоторое время, в конце концов, интервьюер не так много времени. Кроме того, проходя через не пропустите, что непрерывное обновление. Наконец, не стоит забывать количество общественного беспокойства «программа New Horizons», чтобы получить информацию из первых рук.

Оригинальная ссылка: « интервьюер, структура памяти Java8 JVM изменилась, постоянное пространство от имени юаней »

Серия «Интервьюер»:


Новая программа Horizons : возбуждающий и рост не будет хватать

Новая программа Horizons - микро-общественный канал номер

рекомендация

отwww.cnblogs.com/secbro/p/11718987.html