Параметри запуску
Це спеціальні параметри, які дозволяють оптимізувати запуск і подальшу роботу сервера.
Обов'язково врахуйте, що аргументи слід підбирати індивідуально під апаратне забезпечення сервера, а також версію Java.
Почнемо з невеликого прикладу:
java -jar server.jar
Це найпростіший скрипт для запуску ядра сервера, в якому не вказано жодних додаткових аргументів.
Тепер про самі параметри
-jar — цей аргумент задає тип Java-файла, що запускається.
name.jar — назва файлу, який запускається.
nogui — запускає сервер без графічного інтерфейсу, оскільки він нам просто не потрібен.
Основні флаги
-xincgc — вмикає "збирач сміття", який час від часу вивільняє невикористовувану оперативну пам'ять. Тип збирача автоматично обирається залежно від версії Java.
-server — активує серверний режим Java, у якому за замовчуванням увімкнено підтримку експериментальних флагів. Також прискорює компіляцію класів, що дає приріст продуктивності, але збільшує час запуску сервера (підтримуються лише 64-бітні системи).
Виділення оперативної пам'яті
-Xmx0000M — максимальний обсяг пам'яті, який може бути виділено серверу.
-Xms0000M — мінімальний обсяг пам'яті, виділений серверу.
-Xmn0000M — обсяг пам'яті, що виділяється для тимчасових об'єктів.
-XX:MaxPermSize=0000M — обсяг пам'яті для PermGen Space (не працює на Java 8).
-XX:SharedReadOnlySize=0000M — обсяг пам'яті під область тільки для читання у PermGen.
Збирачі "сміття"
-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








