---
title: "Настройка кастомных параметров запуска IntelliJ IDEA / Android Studio"
url: "https://romankryvolapov.com/ru/intellij-idea-launch-options/"
description: "Что делает каждый флаг в Edit Custom VM Options: размеры heap, выбор Garbage Collector, кэш кода и настройка памяти в Android Studio."
language: ru
updated: 2026-01-21
---
Параметры можно изменить, выбрав в IntelliJ IDEA или Android Studio \
Help -> Edit Custom VM Options (не путать с gradle.properties), \
если их нельзя сохранить- откройте в текстовом редакторе в режиме администратора

## Основные параметры JVM {#Основные-параметры-JVM}

**Вот небольшое объяснение каждого:**

**Xms2g:** \
Устанавливает начальный размер кучи JVM равным 2 гигабайтам. Это минимальный размер, который будет выделен сразу после запуска JVM.

**-Xmx8g:** \
Задаёт максимальный размер кучи JVM равным 8 гигабайтам. Это ограничение на максимальное количество памяти, которое может использовать JVM.

**-XX:ReservedCodeCacheSize=2g:** \
Выделяет 2 гигабайта для хранения скомпилированного кода, улучшая производительность за счёт уменьшения количества компиляций Just-In-Time (JIT).

**-XX:+IgnoreUnrecognizedVMOptions:** \
Игнорирует неизвестные параметры JVM, что позволяет избежать ошибок при запуске с параметрами, которые не поддерживаются в данной версии JVM.

**-XX:+UseG1GC:** \
Включает сборщик мусора G1, который предназначен для оптимизации больших объёмов памяти и минимизации задержек.

**-XX:SoftRefLRUPolicyMSPerMB=50:** \
Устанавливает время в миллисекундах, которое мягкие ссылки будут жить после последнего доступа к ним для каждого мегабайта свободной памяти в куче.

**-XX:CICompilerCount=2:** \
Задаёт количество компиляторов Just-In-Time (JIT), что может улучшить время старта и производительность при запуске нового кода.

**-XX:+HeapDumpOnOutOfMemoryError:** \
При возникновении ошибки из-за недостатка памяти будет создан дамп кучи.

**-XX:-OmitStackTraceInFastThrow:** \
Отключает оптимизацию, при которой стек трассировки исключений может быть опущен для повторяющихся исключений.

**-ea:** \
Включает проверки утверждений в JVM.

**-Dsun.io.useCanonCaches=false:** \
Отключает кэширование канонических путей, что может улучшить поведение ввода-вывода при изменении файлов вне JVM.

**-Djdk.http.auth.tunneling.disabledSchemes=""":** \
Разрешает использование всех схем аутентификации при туннелировании HTTP.

**-Djdk.attach.allowAttachSelf=true:** \
Разрешает виртуальной машине Java прикреплять себя к самой себе.

**-Djdk.module.illegalAccess.silent=true:** \
Подавляет предупреждения о нелегальном доступе к API.

**-Dkotlinx.coroutines.debug=off:** \
Отключает отладку корутин Kotlin.

**-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log:** \
Задаёт путь к файлу, в который будут записываться ошибки JVM.

**-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof:** \
Указывает путь для сохранения дампа кучи при возникновении ошибки из-за недостатка памяти.\\

**— add-opens:** \
Эти параметры устраняют ограничения модульности Java, позволяя доступ к внутренним API библиотекам ASM, используемым для работы с байт-кодом.

**-javaagent:C:\\Program Files\\JetBrains\\Activate\\ja-netfilter.jar=jetbrains:** \
Указывает на агента Java, который встраивается в процесс JVM для измен

## Управление памятью и сборкой мусора {#Управление-памятью-и-сборкой-мусора}

Помимо этих параметров, которые обычно указаны по умолчанию, также можно добавить и другие

**XX:NewRatio=3:** \
Устанавливает соотношение между молодым поколением и старым поколением кучи. Значение 3 означает, что старое поколение будет в три раза больше молодого поколения.

**-XX:NewSize=512m:** \
Устанавливает начальный размер молодого поколения.

**-XX:MaxNewSize=1g:** \
Устанавливает максимальный размер молодого поколения.

**-XX:MaxPermSize=350m:** \
Устанавливает максимальный размер постоянного поколения для JVM версий до 8 (в Java 8 и выше этот параметр игнорируется из-за перемещения строк в кучу).

## Настройки производительности и отладки {#Настройки-производительности-и-отладки}

**XX:+DisableExplicitGC:** \
Запрещает системе вызывать сборку мусора явно через System.gc().

**-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/path/to/gc.log:** \
Включает детализированный лог сборки мусора, что может помочь при диагностике проблем с производительностью.

**-XX:+UseFastAccessorMethods:** \
Включает оптимизацию вызовов простых методов (accessors).

**-XX:+UseCompressedOops:** \
Включает использование "сжатых" указателей на объекты для уменьшения использования памяти на 64-битных JVM.

## Настройки интерфейса и пользовательского опыта {#Настройки-интерфейса-и-пользовательского-опыта}

**Dawt.useSystemAAFontSettings=on:** \
Включает сглаживание шрифтов в стиле операционной системы.

**-Dswing.aatext=true:** \
Включает улучшенное сглаживание текста для интерфейса на базе Swing.

**-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine:** \
Использует Marlin как движок рендеринга 2D, что может улучшить производительность отрисовки.

## Прочие опции {#Прочие-опции}

**Dfile.encoding=UTF-8:** \
Устанавливает кодировку файлов проекта в UTF-8.

**-Didea.paths.selector=AndroidStudio4.0:** \
Задаёт папку для настроек Android Studio, плагинов и логов, позволяя иметь отдельные настройки для разных версий Android Studio.

**-Didea.platform.prefix=AndroidStudio:** \
Указывает префикс платформы, что может быть необходимо для некоторых плагинов.

## Возможные варианты Garbage Collector {#Возможные-варианты-Garbage-Collector}

**Serial GC (-XX:+UseSerialGC):** \
Это простейший сборщик мусора, использующий однопоточную сборку как для молодого поколения (young generation), так и для старого поколения (old generation) объектов. Этот сборщик может быть подходящим для приложений с ограниченными ресурсами и небольшим объемом данных.

**Parallel GC (-XX:+UseParallelGC):** \
Использует множество потоков для сборки мусора в молодом поколении, что позволяет улучшить производительность при работе с большими объемами данных и высокой производительностью обработки. Это стандартный сборщик мусора для многопоточных приложений с большим объемом памяти.

**Concurrent Mark Sweep (CMS) GC (-XX:+UseConcMarkSweepGC):** \
Предназначен для сокращения времени пауз, вызванных сборкой мусора, за счет выполнения большей части работы в фоновом режиме. Хотя CMS может быстро обрабатывать кучу и сокращать время остановки, он может потреблять больше ресурсов процессора и памяти.

**Z Garbage Collector (ZGC) (-XX:+UseZGC):** \
Это масштабируемый сборщик мусора с низким временем остановки, предназначенный для приложений, требующих больших объемов памяти (сотни гигабайтов) и минимального влияния сборки мусора на задержку. ZGC стремится ограничить задержку до нескольких миллисекунд или менее, даже при работе с большими кучами.

**Shenandoah GC (-XX:+UseShenandoahGC):** \
Подобно ZGC, Shenandoah стремится минимизировать время пауз во время сборки мусора, работая в основном параллельно с выполнением программы. Он разработан для уменьшения задержек при работе с большими объемами памяти.

## Настройка памяти в Android Studio {#Настройка-памяти-в-Android-Studio}

Настроить параметры памяти для Android Studio можно во вкладке \
Settings -> Appearance & Behavior -> System Settings -> Memory Settings\
в IntelliJ IDEA на момент написания статьи этой настройки не было

[ Copyright: Roman Kryvolapov ](https://t.me/RomanKryvolapov)
