В пуле памяти Java, что является заменой замены кеша кода в JAVA 11?

Я вижу, что следующие вопросы актуальны: -разделенный и garbage-collection-not-running -for-code-cache-memory-pool, но у меня нет соответствующих ответов.

Как вы видите через Jconsole, в пуле памяти больше нет кэша кода. Нужны некоторые подробности о том, что является его заменой, и где мы можем найти более подробную информацию об изменении?

введите здесь описание изображения


person Narendran Solai Sridharan    schedule 05.12.2019    source источник


Ответы (1)


Я считаю, что реструктуризация пришла с Java 9.

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

Основная идея заключалась в повышении производительности и возможности будущих расширений.

Существует три различных типа скомпилированного кода верхнего уровня:

  • Внутренний код JVM (не метод)
  • Профилированный код
  • Непрофильный код

Соответствующие кучи кода:

  • Куча кода без метода, содержащая код без метода, например буферы компилятора и интерпретатор байт-кода. Этот тип кода навсегда останется в кеше кода.

  • Куча профилированного кода, содержащая слегка оптимизированные профилированные методы с коротким временем жизни.

  • Куча непрофилированного кода, содержащая полностью оптимизированные непрофилированные методы с потенциально длительным временем жизни.

Вы можете найти некоторые полезные подробности (например, мотивацию этой реструктуризации, как настроить новые кучи и т. д.) в JEP- 197 :)

person ikos23    schedule 05.12.2019