Параметры запуска
Это специальные настройки, которые позволяют оптимизировать запуск и работу сервера в дальнейшем.
Обязательно учтите, что аргументы следует подбирать индивидуально под оборудование сервера, а также версию Java.
Начнем с небольшого примера:
Это самый обычный скрипт для запуска ядра сервера, в котором не указаны никакие дополнительные аргументы.
Теперь о самих параметрах
-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.
Сборщики различного «мусора»
Для одноядерных процессоров используйте любой сборщик мусора, но не указывайте количество потоков для него. На данный момент лучшим сборщиком является ConcMarkSweepGC. Чем больше число SurvivorRatio — тем лучше, соответственно тем меньше старые объекты будут захламлять Оперативную память. Чем больше значение TargetSurvivorRatio, тем большее количество объектов будет очищаться (желательно не ставить более 90). Использовать MaxGCPauseMillis лучше всего с G1GC или с конкретно указанным сборщиком мусора. AutoGCSelectPauseMillis — со сборщиком, который система сама выберет. G1HeapRegionSize лучше не устанавливать, java сама подберет оптимальное значение, использовать рекомендуем только в случае, если Вы знаете, что делаете.
-XX:+UseSerialGC — включает сборщик мусора, который работает в 1-ом потоке.
-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% Оперативной памяти.
В общем итоге у нас получился подобный скрипт для запуска сервера:
Last updated