Запустите своё приложение с
-XX:+PrintFlagsFinal, и вы увидите все настройки JVM.🔹 Зачем это нужно
— Показывает финальные значения всех JVM-флагов после применения эргономики, дефолтов и ваших переопределений.
— Полезно для Java-сервисов в контейнерах: вы думаете, что выставили -Xmx512m, а JVM видит 4GB хоста и живёт своей жизнью.
— Мгновенно отвечает на вопрос «а почему heap такой большой?».
— Работает на любом JDK без агентов, плагинов и прав суперпользователя.
🔹 Как использовать
— Дамп всех флагов при старте:
java -XX:+PrintFlagsFinal -version
— Только интересующее фильтруем через grep:
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i heapsize
— Посмотреть, какой GC выбрала эргономика:
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i "use.*gc"
— На живом процессе без рестарта:
jcmd <pid> VM.flags
jcmd <pid> VM.flags — особенно удобен в проде: не надо убивать процесс, видите текущее состояние прямо сейчас.
⚠️ Флаги делятся на три типа в выводе: product — обычный флаг, manageable — можно менять на лету через jcmd, diagnostic — требует -XX:+UnlockDiagnosticVMOptions. Если видите флаг, который хотите поменять, сначала смотрите его тип — сэкономит кучу времени на отладке.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise