Как получить гистограмму использования метапространстваJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как получить гистограмму использования метапространства

Сообщение Anonymous »

Справочная информация
Разработанное нами приложение вызывает ошибку java.lang.OutOfMemoryError: Metaspace даже в среде -XX:MaxMetaspaceSize=512m. Это приложение состоит из множества jar-файлов, поэтому я предполагаю, что ошибка OutOfMemoryError вызвана не утечкой памяти, а тем фактом, что существует так много классов. Поэтому я хочу знать, какие пакеты или jar-файлы вызывают нехватку метапространства.
Проблема
Вы можете использовать jmap, чтобы показать использование кучи Java, но я не смог найти способ показать гистограмму метапространства с помощью jmap.
  • Код: Выделить всё

    jmap -histo
    показывает гистограмму для экземпляров в куче Java, а не в метапространстве.
  • Код: Выделить всё

    jmap -clstats
    показывает только использование метаданных для каждого загрузчика классов, а не для каждого пакета/банки.
Вопрос
Есть ли есть ли способ получить гистограмму использования метапространства?
Например, я хочу знать: «Классы в Spring-*.jar занимают большую часть метапространства 512M».
Готовая функция JDK или JRE предпочтительнее.
Изменить
  • ООО Metaspace происходят до повторного развертывания приложения (развертывание прерывается Metaspace OOM). .
  • Приложение основано на Spring Boot и активно использует @inject, поэтому может быть создано много прокси-объектов.
  • Приложение не манипулирует загрузчиками классов и не загружает классы динамически в бизнес-логике.
  • ООМ никогда не возникают, если указан -XX:MaxMetaspaceSize=1g (это нежелательно с точки зрения дизайна ресурсов), даже после многократного перераспределения приложений. .
  • Ошибки OOM возникают даже при первом повторном развертывании после перезапуска процесса сервера JavaEE.
  • Самому серверу требуется ~300 МБ метапространства, а приложение () составляет 100 МБ~.
  • При повторном развертывании приложения сервер потребляет примерно в два раза больше размера .class в .ear из-за мягкой ссылки. Я знаю, что -XX:SoftRefLRUPolicyMSPerMB=0 смягчает это, но это нежелательно из-за снижения производительности.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -histogram
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как получить гистограмму использования метапространства
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Утечка памяти метапространства: пользовательский загрузчик классов не может быть gc из-за того, что inheritedAccessContr
    Гость » » в форуме JAVA
    0 Ответы
    47 Просмотры
    Последнее сообщение Гость
  • Как уменьшить раздувание метапространства с помощью @Tostring и @EqualsAndHashCode от Lombok
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как распечатать гистограмму из списка номеров
    Гость » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Гость
  • Как правильно добавлять метки на гистограмму в MPAndroidChart
    Гость » » в форуме Android
    0 Ответы
    54 Просмотры
    Последнее сообщение Гость

Вернуться в «JAVA»