Запустите
jcmd <pid> Thread.print, и вы получите полный thread dump живого JVM-процесса — без kill -3, без рестарта, без агентов.🔹 Зачем это нужно
— Полный дамп всех потоков с трассировками прямо на живом проде;
— Работает с любым JDK-процессом: Spring Boot, Quarkus, Kafka Streams;
— Один бинарник закрывает heap dump, GC-статистику, профилирование и диагностику;
— Не требует JMX, агентов или открытых портов — только PID.
🔹 Как использовать
— Список всех JVM-процессов и их PID:
jcmd
— Все доступные команды для конкретного процесса:
jcmd <pid> help
— Thread dump (дедлоки, зависшие потоки):
jcmd <pid> Thread.print
— Heap dump на диск:
jcmd <pid> GC.heap_dump /tmp/heap.hprof
— Статистика GC в реальном времени:
jcmd <pid> GC.heap_info
— Запустить GC вручную (осторожно на проде):
jcmd <pid> GC.run
— Статистика классов по памяти:
jcmd <pid> GC.class_histogram
jcmd <pid> GC.class_histogram — первое, что стоит запустить при подозрении на утечку памяти: сразу видно, каких объектов неожиданно много и сколько они весят.⚠️ Некоторые команды требуют флага -XX:+UnlockDiagnosticVMOptions при запуске JVM — иначе получите Exception: No such command. Если команда недоступна, проверьте jcmd <pid> help — там только то, что реально работает для вашего процесса прямо сейчас.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise