Метасоль JVM заполняется после незначительной сборки мусора - PullRequest
0 голосов
/ 23 ноября 2018

Я изучал управление памятью Java и различные разделы в кучной памяти, такие как eden, s0, s1, old gen и metaspace.Я использовал VisualGC для отслеживания того, как память заполняется между различными разделами кучи.Я заметил, что после первой сборки мусора резко увеличилось количество памяти, занимаемой в области метапространства.

Вот изображение представления VisualGC: * ​​1003 *

VisualGC_Monitoring

Я хотел бы понять, что добавляется в метапространство после первого gc.Я провел исследование, но не смог получить ответы.Любая помощь здесь?

1 Ответ

0 голосов
/ 24 ноября 2018

Metaspace не является "полным".Согласно подписи, лимит для метапространства составляет 1,008 ГБ, но у вас там 8,602 млн. (Из первоначального распределения 9,125 млн.).Это примерно 1% от лимита.

Metaspace содержит вещи, связанные с классами;т.е. байт-коды, скомпилированный нативный код, дескрипторы, статика.~ 8M байт - это довольно скромное количество метапространства для типичного Java-приложения, которое использует несколько классов Java SE или сторонних библиотек.первый gc.

Я подозреваю, что это просто бухгалтерская вещь;т.е. объем памяти, используемый metaspace, обновляется только при запуске GC.Если вы заметили, два очевидных изменения в использовании метапространства (после начала записи) совпадают с событием GC.

...