Как отладить или проверить объем памяти приложения Java? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как отладить или проверить объем памяти приложения Java? [закрыто]

Сообщение Anonymous »

Способы проверки/отладки объема памяти в Java
  • Флаги JVM (встроенные)
Включить подробное ведение журнала сборщика мусора и памяти при запуске:
java -Xms512m -Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xlog:gc*
Полезно для:
Просмотра объема выделенной кучи
Отслеживания пауз GC
Обнаружения утечек памяти (частый сборщик мусора, низкий уровень свободной кучи)
✅ 2. jconsole (встроенный инструмент с графическим интерфейсом)
Запуск:
jconsole
Вы можете подключиться к работающей JVM и просмотреть:
Живой график использования кучи
Без кучи (Метапространство)
Потоки
Загруженные/выгруженные классы
Подходит для быстрой проверки вручную.
/> ✅ 3. jvisualvm (VisualVM)
Лучшая визуализация, чем jconsole.
Функции:
Использование динамической кучи
Использование метапространства
Выборка ЦП и памяти
Анализ дампа кучи
Определение объектов, занимающих память
Обнаружение утечек памяти
Начните с:
jvisualvm
✅ 4. Java Flight Recorder (JFR) + Mission Control
Лучше всего подходит для отладки производства с практически нулевыми накладными расходами.
Начните с:
java -XX:StartFlightRecording=duration=60s,filename=app.jfr -jar app.jar
Затем откройте файл .jfr в Java Mission Control.
Вы можете увидеть:
Использование кучи
Горячие точки распределения
Поведение GC
Потоки и блокировки
Утечки памяти
✅ 5. Дампы кучи
Принудительное создание дампа кучи:
jmap -dump:live,format=b,file=heap.hprof
Анализ с помощью:
Eclipse MAT (Memory Analyzer)
VisualVM
JMC
Вы можете обнаружить:
Какие объекты занимают больше всего памяти
Утечки загрузчиков классов
Разбивку дерева Dominator
✅ 6. jstat – облегченный мониторинг CLI
Отслеживание кучи и сборок мусора:
jstat -gc 1s
Показывает:
Использование Eden / Survivor / Old gen
Подсчет GC (YGC, FGC)
Тенденции использования памяти
Хорошо для быстрой отладки в производстве.
✅ 7. Использование Runtime в коде
Вы можете распечатать память изнутри 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");
Полезно для упрощенного ведения журналов или отладки.
✅ 8. Prometheus + Grafana (производство)
Отображение метрик JVM через:
Микрометр
Spring Boot Actuator
Экспортер Prometheus JMX
Просмотр информационных панелей для:
Тенденция использования кучи
Паузы GC
Количество потоков
Использование метапространства
Коэффициент распределения
Очень полезно для долговременного обнаружения утечек памяти.

Подробнее здесь: https://stackoverflow.com/questions/798 ... pplication
Ответить

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

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

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

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

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