> For the complete documentation index, see [llms.txt](https://spacecore.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://spacecore.gitbook.io/wiki/ua/minecraft/launch-parameters.md).

# Опції запуску

{% hint style="danger" %}

### Дані застаріли

**База знань переїхала →** [**https://wiki.spacecore.pro/**](https://wiki.spacecore.pro/)

Ця вікі більше не оновлюється. Актуальні інструкції та статті — за новою адресою.
{% endhint %}

{% content-ref url="<https://wiki.spacecore.pro/>" %}
<https://wiki.spacecore.pro/>
{% endcontent-ref %}

***

Це спеціальні налаштування, які дозволяють оптимізувати запуск і роботу сервера у майбутньому.

{% hint style="warning" %}
Обов'язково враховуйте, що аргументи повинні бути обрані індивідуально для обладнання сервера, а також для версії Java.
{% endhint %}

Почнемо з невеликого прикладу:

<pre><code><strong>java -jar server.jar
</strong></code></pre>

Це найпоширеніший сценарій для запуску ядра сервера, який не містить жодних додаткових аргументів.

#### Тепер про самі параметри

* `-jar` — цей аргумент вказує тип Java-файлу для запуску.
* `name.jar` — назва файлу для запуску.
* `nogui` — запускає сервер без графічного інтерфейсу, оскільки він нам просто не потрібен.

#### Основні прапори

* `-xincgc` — активує «колектор сміття», який час від часу вивантажуватиме невикористану оперативну пам'ять. Тип колектора автоматично вибирається залежно від версії Java.
* `-server` — активує серверну версію Java, яка за замовчуванням включає підтримку експериментальних прапорів. Також прискорює компіляцію класів, що підвищує продуктивність, але збільшує час запуску сервера (підтримуються лише 64-бітові системи).

#### Виділення оперативної пам'яті

Аргументи підтримують як «M» для мегабайтів, так і «G» для гігабайтів. Наприклад, аргумент `Xms2G` запустить сервер з 2 гігабайтами оперативної пам'яті.

* `-Xmx0000M` — максимальна кількість виділеної пам'яті для сервера.
* `-Xms0000M` — мінімальна кількість виділеної пам'яті для сервера.
* `-Xmn0000M` — кількість пам'яті, виділеної для тимчасових об'єктів.
* `-XX:MaxPermSize=0000M` — кількість пам'яті для PermGen Space (не працює на Java 8).
* `-XX:SharedReadOnlySize=0000M` — кількість пам'яті під read-only у просторі PermGen.

#### Колектори різного «сміття»

* `-XX:+UseSerialGC` — вмикає збирач сміття, який працює на 1 потоці.
* `-XX:+UseConcMarkSweepGC` — вмикає збирач сміття, який використовує потужність декількох ядер процесора.
* `-XX:ConcGCThreads=2` — кількість потоків для збирача сміття.
* `-XX:+UseG1GC` — активує новий збирач сміття, який ділить всю пам'ять на конкретні секції, і завдяки використанню декількох ядер збирає невикористану пам'ять з усіх секцій.
* `-XX:G1HeapRegionSize=32` — кількість оперативної пам'яті, виділеної для кожної секції.
* `-XX:AutoGCSelectPauseMillis=2500` — кількість часу в мілісекундах між викликами автоматично вибраного збирача сміття.
* `-XX:MaxGCPauseMillis=1000` — тривалість часу в мілісекундах між викликами певного збирача сміття. Для G1 GC виконує роль максимального встановленого інтервалу.
* `-XX:SurvivorRatio=8` — кількість радіусів для існування виживаючих об'єктів (чим менше число, тим більше місця). Більше місця дозволяє новоствореним об'єктам існувати довше перед збором сміття.
* `-XX:TargetSurvivorRatio=90` — кількість місця у відсотках для виживаючих об'єктів, що дозволить очистити більше невикористаних об'єктів під час збору сміття.
* `-XX:+UseBiasedLocking` — прискорення синхронізації об'єктів на багатоядерних процесорах.
* `-XX:+UseFastAccessorMethods` — використання оптимізованих версій викликів методів.
* `-XX:+UseFastEmptyMethods` — виключення порожніх методів із компіляції.
* `-XX:+UseCompressedOops` — зменшення розміру покажчика, заголовків та зсувів всередині створених об'єктів. Залежно від коду, це заощадить 20-60% оперативної пам'яті.

#### Загальний сценарій запуску сервера

В цілому, ми отримали подібний сценарій для запуску сервера:

```
java -Xincgc -Xms512M -Xmx4G -XX:MaxPermSize=128M -XX:SharedReadOnlySize=30M -XX:+UseConcMarkSweepGC -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -jar server.jar nogui
```
