Магия JVM Flags — 29 июля 2026 г. в 09:03:46.944
Магия JVM Flags Запустите своё приложение с -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. Если видите флаг, который хотите поменять, сначала смотрите его тип — сэкономит кучу времени на отладке.

