вычисление использования кучи jvm - PullRequest
0 голосов
/ 15 мая 2018

Мне нужно захватить использование кучи jvm из журналов gc.out. Вот что я вижу в логах:

178.658: [GC (Metadata GC Threshold)  127089K->17827K(502784K), 0.0398140 secs]
178.698: [Full GC (Metadata GC Threshold)  17827K->17031K(502784K), 0.0482840 secs]
180.498: [GC (Allocation Failure)  148615K->20762K(502784K), 0.0082820 secs]

Может кто-нибудь объяснить, что означают эти поля?

1 Ответ

0 голосов
/ 15 мая 2018

Порядок полей следующий:

  1. Время в секундах, когда GC запускался относительно запуска JVM
    • Значения из журнала: 178.658, 178.698 и 180.498
  2. Тип GC: может быть второстепенный / мажорный / полный
    • Значения из журнала: GC, Full GC и GC
      • Исходя из этого, мы можем только сказать, был ли это полный сборщик мусора или нет. Вам нужно более детальное ведение журнала, чтобы увидеть, какая именно часть памяти была очищена - молодая, постоянная или метапространство (или некоторая их комбинация), которая помогает определить точный тип GC.
  3. Причина срабатывания GC
    • Значения из журнала: Порог метаданных GC, Порог метаданных GC и Ошибка выделения
      • Метаданные GC Threshold: Metaspace - это замена Permgen в Java 8. Так что это вызвано тем, что вы исчерпали пространство пермгена.
      • Ошибка выделения: не осталось места для размещения новых объектов.
  4. Используемый размер кучи до и после GC (в формате до-> после)
    • Значения из журнала: 127089K-> 17827K, 17827K-> 17031K и 148615K-> 20762K
  5. Общий размер кучи
    • Значение из журнала 502784K
  6. Продолжительность ГХ
    • Значения из журнала: 0,0398140 с, 0,0482840 с и 0,0082820 с
...