Я пытался понять структуру памяти HotSpot JVM и запутался с двумя терминами: "Область метода" и "PermGen" пространство. В документах, на которые я ссылался, говорится, что область метода содержит определение классов и методов, включая байтовый код. В некоторых других документах говорится, что они хранятся в пространстве PermGen.
Итак, могу ли я сделать вывод, что эти две области памяти одинаковы?
Ответ 1 · рейтинг 18 · xea
Вам следует взглянуть на типы памяти Java и, при необходимости, на этот документ об сборке мусора в Java. Последнее очень многословно, и оба они полезны.
Фактически область метода является частью постоянного поколения:
Третье поколение, тесно связанное с постоянным поколением, - это постоянное поколение. Постоянная генерация является особенной, потому что она содержит данные, необходимые виртуальной машине для описания объектов, не имеющих эквивалента на уровне языка Java. Например, объекты, описывающие классы и методы, хранятся в постоянной генерации.
Ответ 2 · рейтинг 6 · Ernest Friedman-Hill
Вы можете рассматривать "Область методов" как подмножество "PermGen", поскольку постоянное пространство генерации действительно содержит определения классов, но также содержит интернированные строки и другие биты данных, которые вряд ли когда-либо будут отброшены.
Ответ 3 · рейтинг 4 · Pinkesh Sharma
Область метода - это в основном пространство без кучи, такое как Stack, которое хранит скелет класса. скелет включает статические переменные со значениями, конструкторами и т. д. Операция отражения выполняется в этой области памяти. Perm - это пространство памяти, параллельное куче, в котором хранится двоичный код текущего исполняемого класса.
Ответ 4 · рейтинг 3 · killjoy
дает довольно хорошее представление, которое я больше нигде не нашел
Большинство людей называют Heap и Stack эквивалентами и основными компонентами, но Тай дает идеальное объяснение с превосходными изображениями.
Изменить: ссылка больше не работает :(