Область метода и PermGen

Я пытался понять структуру памяти HotSpot JVM и путался с двумя терминами "Область Метод" и "Пермин". В документах, которые я указал, говорят, что в области методов содержится определение классов и методов, включая код байта. В некоторых других документах говорится, что они хранятся в пространстве PermGen.

Итак, могу ли я заключить, что эти две области памяти одинаковы?

Ответы

Ответ 1

Вы должны взглянуть на Java Memory Types и, возможно, в этом документе о Garbage Collection в Java. Последнее очень много, и оба они полезны.

Фактически область Метод является частью Постоянного Поколения:

Третье поколение, тесно связанное с поколением, является постоянное поколение. Постоянное поколение является особенным, потому что оно содержит данные, необходимые виртуальной машине для описания объектов, которые выполняют не имеют эквивалентности на уровне языка Java. Например объекты, описывающие классы и методы, хранятся в постоянном поколения.

Ответ 2

Вы можете рассматривать область "Метод" подмножество "ПерминГен", поскольку пространство постоянного поколения действительно содержит определения класса, но оно также содержит интернированные строки и другие биты данных, которые вряд ли когда-либо будут отброшены,

Ответ 3

Область "Метод" - это в основном пространство без кучи, такое как Stack, которое сохраняет кластер классов. скелет содержит статические переменные со значениями, конструкторы и т.д. Операция отражения работает на этой области памяти. Perm - это пространство памяти, параллельное куче, с сохранением двоичного кода текущего исполняемого класса.

Ответ 4

http://www.pointsoftware.ch/en/under-the-hood-runtime-data-areas-javas-memory-model/ дает довольно хорошую идею, которую я не нашел в другом месте.

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