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

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

Обов'язково враховуйте, що аргументи повинні бути обрані індивідуально для обладнання сервера, а також для версії Java.

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

java -jar server.jar

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

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

  • -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

Last updated