Методы устранения частых проблем FullGC

Java

Например, машина часто выдает аварийные сигналы FullGC, как определить причину?

Общее явление заключается в том, что загрузка ЦП резко возрастает, RT увеличивается, и, вероятно, произойдет OOM. При столкновении с этим явлением, как определить местонахождение:

Jmap

Вывести сводную информацию о куче, используемый алгоритм GC, конфигурацию кучи (кучи) и использование памяти кучи JVM.

jmap -heap pid

Распечатайте количество экземпляров каждого класса следа памяти, введите информацию о полном имени, начало внутреннего класса имя VM добавит количество префикс объектов «*». Если подпунктер плюс живой, просто живая статистика Отказ

jmap -histo:live pid

Вывод содержимого кучи jvm в файл.Подпараметр live является необязательным.Если параметр live указан, в файл выводятся только живые объекты.

jmap -dump:live,format=b,file=myjmapfile.txt pid

finalizerinfo выводит информацию об объектах, ожидающих переработки

jmap -finalizerinfo pid

arthas

Просмотр текущего состояния памяти кучи процесса jvm

dashboard

Метод в системе наблюдения, значение атрибута и текущее состояние критического объекта.

# watch 类全路径  方法名   '属性或者方法的全路径引用'
watch demo.MathGame primeFactors 'target.illegalArgumentCount'
# 观察方法的第一个参数值
watch demo.MathGame primeFactors params[0]

анализ файла jmap

Автономный анализ команд

jhat <heap-dump-file>

Загрузите JVisuvm, не забудьте выбрать HPROF при загрузке, есть несколько разных вариантов, приложений, HPROF

image-20201101232452903

предположение

  • Используйте неограниченные очереди в коде, такие как LinkedBlockingQuene, вы должны обратить внимание, лучше всего установить ограничение длины
  • Когда ThreadLocal израсходован, не забудьте удалить объект

Ссылаться на