Область CompressedClassSpaceSize содержит область MaxMetaspaceSize? - PullRequest
0 голосов
/ 18 января 2019

Что такое CompressedClassSpaceSize?

Какая связь между CompressedClassSpaceSize и MetaspaceSize?

1 Ответ

0 голосов
/ 18 января 2019

Metaspace - это область памяти для хранения метаданных класса - внутренние структуры JVM, созданные при синтаксическом анализе .class файлов.

Метаданные класса включают в себя:

  • Внутреннее представление классов Java
  • Методы с их байт-кодом
  • дескрипторы полей
  • Постоянные пулы
  • Символы
  • Аннотации
  • и т.д.

-XX:MaxMetaspaceSize по умолчанию не ограничено.

Когда опция -XX:+UseCompressedClassPointers включена (по умолчанию для куч <32G), классы перемещаются из Metaspace в отдельную область, называемую <strong>Compressed Class Space . Это позволяет разрешить адресацию структур классов VM с помощью 32-битных значений вместо 64-битных.

Итак, Compressed Class Space содержит внутреннее представление классов Java, в то время как Metaspace содержит все остальные метаданные: методы, пулы констант, аннотации и т. Д.

Размер сжатого пространства классов ограничен -XX:CompressedClassSpaceSize, который по умолчанию равен 1G. Максимально возможное значение -XX:CompressedClassSpaceSize - 3G.

Неклассовое Metaspace и Compressed Class Space являются двумя непересекающимися областями. MaxMetaspaceSize ограничивает фиксированный размер обеих областей:

committed(Non-class Metaspace) + committed(Compressed Class Space) <= MaxMetaspaceSize

Если значение MaxMetaspaceSize меньше CompressedClassSpaceSize, последнее автоматически уменьшается до

CompressedClassSpaceSize = MaxMetaspaceSize - 2*InitialBootClassLoaderMetaspaceSize
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...