Какие обьекты содержит в себе meta?

212
09 февраля 2018, 20:25

Доброе Утро.Изучаю Модель памяти.И как я понел в стаке есть методы которые держут ссылки на обьекты внутри хипа ,но помимо хипа есть и meta раздел .Про него немогу ниче понять чем не устраивал хип и стак также ссылается на meta ?

Answer 1

Кратко

Код и метаданные классов (имя, родительский класс, списки полей и методов).

Подробно

Память в Java делится на несколько областей, предназначенных для хранения разных типов данных. В heap (который также делится на несколько областей, подробнее - в любой статье по сборке мусора в Java) хранятся создаваемые объекты. В стеке - ссылки на объекты в heap и значения примитивных типов (int, float и т. д.), которые видны из текущей точки выполнения. А в Metaspace (до Java 8 - в Permanent Generation) хранится код и метаданные классов. Под них выделили отдельную область памяти, потому что, в отличие от других объектов, они неизменяемые, а значит, можно провести ряд оптимизаций как по хранению и доступу к ним, так и по сборке мусора. До Java 5 в Permanent Generation сборка мусора по умолчанию не проводилась, однажды загруженный виртуальной машиной класс не выгружался до конца работы программы. В Java 7 Permanent Generation подвергался сборке мусора по умолчанию, в рамках full GC. На заре развития Java, когда не было динамической загрузки классов во время выполнения, это был обоснованный подход, но с течением времени он изжил себя. Например, при редеплое приложения на сервере Java EE в Permanent Generation оставались классы старой версии приложения, что быстро приводило к OutOfMemoryError: PermGen space. Начиная с Java 8 Permanent Generation заменён на Metaspace. Принципиальное различие между ними заключается в том, что Metaspace автоматически расширяется по мере наполнения. Теперь получить ошибку OutOfMemoryError: PermGen space (точнее её аналог OutOfMemoryError: Metaspace) становится сложнее. Без явного указания опции -XX:MaxMetaspaceSize Metaspace будет расширяться до тех пор, пока есть свободная память.

READ ALSO
Как добавить в post запрос form-data?

Как добавить в post запрос form-data?

Как исправить код, чтобы корректно отправляло "form-data":

300
Менять строки таблицы jquery

Менять строки таблицы jquery

Есть скрипт динамической таблицы

256
Как добавить html2canvas к dom-to-image?

Как добавить html2canvas к dom-to-image?

Когда делаю скрин dom-to-image все нормально, но не во всех браузерах работаетПытаюсь добавить html2canvas, чтобы скрины делать отдельно для safari, но они...

361
внедрение php кода во внешние js файлы

внедрение php кода во внешние js файлы

Подскажите, возможно ли реализовать следующую ситуацию:

239