- Флаги JVM (встроенные)
java -Xms512m -Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xlog:gc*
Полезно для:
Просмотра объема выделенной кучи
Отслеживания пауз GC
Обнаружения утечек памяти (частый сборщик мусора, низкий уровень свободной кучи)
Запуск:
jconsole
Вы можете подключиться к работающей JVM и просмотреть:
Живой график использования кучи
Без кучи (Метапространство)
Потоки
Загруженные/выгруженные классы
Подходит для быстрой проверки вручную.
/>
Лучшая визуализация, чем jconsole.
Функции:
Использование динамической кучи
Использование метапространства
Выборка ЦП и памяти
Анализ дампа кучи
Определение объектов, занимающих память
Обнаружение утечек памяти
Начните с:
jvisualvm
Лучше всего подходит для отладки производства с практически нулевыми накладными расходами.
Начните с:
java -XX:StartFlightRecording=duration=60s,filename=app.jfr -jar app.jar
Затем откройте файл .jfr в Java Mission Control.
Вы можете увидеть:
Использование кучи
Горячие точки распределения
Поведение GC
Потоки и блокировки
Утечки памяти
Принудительное создание дампа кучи:
jmap -dump:live,format=b,file=heap.hprof
Анализ с помощью:
Eclipse MAT (Memory Analyzer)
VisualVM
JMC
Вы можете обнаружить:
Какие объекты занимают больше всего памяти
Утечки загрузчиков классов
Разбивку дерева Dominator
Отслеживание кучи и сборок мусора:
jstat -gc 1s
Показывает:
Использование Eden / Survivor / Old gen
Подсчет GC (YGC, FGC)
Тенденции использования памяти
Хорошо для быстрой отладки в производстве.
Вы можете распечатать память изнутри app:
Время выполнения = Runtime.getRuntime();
long useMemory = (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024);
long maxMemory = runtime.maxMemory() / (1024 * 1024);
System.out.println("Used: " + UsedMemory + " MB");
System.out.println("Max: " + maxMemory + " MB");
Полезно для упрощенного ведения журналов или отладки.
Отображение метрик JVM через:
Микрометр
Spring Boot Actuator
Экспортер Prometheus JMX
Просмотр информационных панелей для:
Тенденция использования кучи
Паузы GC
Количество потоков
Использование метапространства
Коэффициент распределения
Очень полезно для долговременного обнаружения утечек памяти.
Подробнее здесь: https://stackoverflow.com/questions/798 ... pplication
Мобильная версия