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

## Основні параметри 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

**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 можна у вкладці \
Settings -> Appearance & Behavior -> System Settings -> Memory Settings\
в IntelliJ IDEA на момент написання статті цього налаштування не було

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