Замовляйте VPS-сервер зі скидкою 15%
Акція завершиться через
00Днів
:
00Годин
:
00Хвилин
:
00Секунд

Параметри запуску

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

 

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

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 — обсяг пам'яті під область тільки для читання у PermGen.

 

Збирачі "сміття"

 

Для одноядерних процесорів можна використовувати будь-який збирач сміття, але не варто вказувати для нього кількість потоків. Наразі найкращим вважається ConcMarkSweepGC. Чим більше значення SurvivorRatio, тим менше старі об'єкти засмічуватимуть оперативну пам'ять. Чим більше значення TargetSurvivorRatio, тим більше об'єктів буде очищатися (не рекомендується ставити вище 90). Використовувати MaxGCPauseMillis найкраще разом із G1GC або з конкретно обраним збирачем сміття. AutoGCSelectPauseMillis застосовується зі збирачем, який система вибирає автоматично. G1HeapRegionSize краще не задавати вручну, Java сама підбере оптимальне значення; використовувати його варто лише тоді, коли Ви чітко розумієте, що робите.

 

-XX:+UseSerialGC — вмикає збирач сміття, який працює в одному потоці.

-XX:+UseConcMarkSweepGC — вмикає збирач сміття, який використовує потужність декількох ядер процесора.

-XX:ConcGCThreads=2 — кількість потоків для збирача сміття.

-XX:+UseG1GC — вмикає новий збирач сміття, який розділяє всю купу пам'яті на регіони та, завдяки використанню кількох ядер, збирає невикористовувану пам'ять з усіх регіонів.

-XX:G1HeapRegionSize=32 — обсяг оперативної пам'яті, що виділяється під кожен регіон.

-XX:AutoGCSelectPauseMillis=2500 — час у мілісекундах між викликами автоматично обраного збирача сміття.

-XX:MaxGCPauseMillis=1000 — тривалість паузи в мілісекундах між викликами конкретного збирача сміття. Для G1GC виконує роль максимально допустимого інтервалу.

-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