Java: модель памяти JVM

модель памяти JVM

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

1. кучи (кучи)

Heap память разделяется всеми потоками, можно разделить на две части: старый и молодого поколения. Цифра представитель постоянного поколения Перми, но примечание не является частью постоянной генерации динамической памяти, а после подстановки jdk1.8 также быть удалено.
Динамическая память виртуальной машины Java память управляет самой большой областью памяти, но и с помощью различных нитей совместны используемой области памяти, область памяти для хранения экземпляра объекта и массива (но не все экземпляры объектов в куче). -Xms по своим размерам (минимум) и -Xmx (макс) параметр (минимуму быть меньше, чем максимум. 1G), когда прежнее приложением для минимальной памяти, по умолчанию является физической памятью операционной системы 1/64, последней виртуальная машина может применить максимальную память, физические значения по умолчанию памяти до 1/4, когда запасная кучи памяти по умолчанию составляет менее 40%, JVM -Xmx увеличивает размер кучи памяти, указанный -XX: задать этот MinHeapFreeRation = чем колонны, больше, чем когда резервная динамическая память 70%, JVM, может быть уменьшена до размера кучи памяти -Xms заданного размера, может XX: указать этот столбец чем MaxHeapFreeRation =, конечно, для того, чтобы избежать частых регулировок в процессе работы размера кучи как правило, при условии, значение -Xms -Xmx в то же самое. Новое поколение динамической памяти = + + старшее поколение прочного поколений. Когда мы мусор, мы, как правило, до кучи памяти и новое поколения в старое поколение (соотношение размеров 1: 2), и новое поколение от Eden Survivor0, Survivor1 в соотношении трех составляет 8: 1: 1, новое поколение механизмы восстановления с использованием алгоритма репликации, в Малой GC, мы должны оставаться зоной выживания для объекта находится выживанием, региональное реальное поведение Eden + одна из зоны выживания, когда наш объект дольше определенного возраста (по умолчанию 15, вы можете посредством установки параметров), поставят объекты в старом поколении, конечно, крупные объекты непосредственно в старое поколение. Алгоритм сбора Старшего поколения использует тег для организации алгоритма.

2. Способ области (метод Площадь)

Способ района, также известный как «постоянное поколение», который используется для хранения виртуальной машины для загрузки класса информации, констант, статические переменных, каждый потоком является общей областью памяти. По умолчанию минимальная из 16Мб, максимум 64 МБ (64 бит виртуальной машины Java Так как расширение указателей, по умолчанию 85m), с помощью -XX: PermSize и -XX: размер MaxPermSize пределы параметров способа зоны. Это непрерывная куча пространство, постоянные поколения сбор мусора и года (старое поколение) в комплект вместе, поэтому независимо от того, кто полон, запустит сборку мусора и постоянное поколение старости. Тем не менее, очевидно, что вопрос, когда загружена информацией о классе JVM превышает емкость параметров -XX: MaxPermSize установленного значения, то приложение сообщит об ошибке ООЙ. Параметры по -XX: установить MaxPermSize: PermSize и -XX.

3. Виртуальный стек Machine (JVM Stack)

Модель памяти Java является описанием способа, выполняемым: каждый метод при выполнении создает «кадр стеки», для хранения локальной переменной таблицы (включая параметры), операцию информационный стек, экспорт метода. Каждый метод вызывается, чтобы завершить выполнение процедуры, кадр стека соответствует виртуальной машине из стека в стек стека процесса. Жизненный цикл с той же нитью, нить является частным. Стек кадр состоит из трех частей: локальных переменных, стек операндов, области данных кадра. Локальные переменные, которые будут организован как слово-широким, массив начинает отсчет от нуля, так как локальные переменные и стек операндов также организованы в массив для блоков слов. Но первое, и разница в том, что он не доступен через индекс, но стек доступен через стек и выход можно рассматривать как временную область хранения данных. В дополнение к локальным переменным и стек операндов, стек Java кадры нужны данные для поддержки постоянного разрешения пула, нормальный метод возвращает, и механизм исключения отправки. Эти данные хранятся в области данных кадра стека кадра Java.
Локальная таблица переменная: сохранение основных данных различных типов, известных в компиляторе, ссылка на объект (указатель ссылку, а не сам объект), отличающееся тем, что длинное и двойная длина данных 64-битное пространство две локальные переменные, остальные типов данных только один. Требуется для завершения локального пространства переменной памяти таблицы присвоенного во время компиляции, при входе в метод, этот метод требует много локального переменного распределения полностью определяется в кадре стеки кадра стека во время работы не изменяет размера локальной переменной таблицы пространство.

4. нативного метод стека (Родная стек)

И виртуальный стек машины, по существу, аналогично, за исключением того, что стек виртуальная машина Java виртуальная машина для выполнения способа обслуживания, а также локальный метод стека является метод Native службы. (Stack пространство намного меньше, чем размер кучи)

Программа счетчик (PC Register)

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

6. Прямая память

Прямая память не является частью памяти виртуальной машины, ни область памяти виртуальной машины Java Specification определена. JDK1.4 NIO недавно добавленный, и введение режима буфера канала ввода-вывода, он может непосредственно вызвать метод выделяет кучи Native внешнюю память, внешняя память является родным динамической памяти, он не будет влиять на размер памяти кучи.
 

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

отwww.cnblogs.com/itsharehome/p/11290907.html