Přeskočit na obsah

Java flagy

Jak většina z vás určitě ví, Minecraft používá Java Flagy (startovací argumenty). Díky nim Java pozná, jaký má mít server výkon, jak se má chovat při čištění paměti (Garbage Collection) a kolik RAM může využít.

Volba správných flagů je kriticky důležitá. Špatné nastavení může způsobovat záseky (lagy) při ukládání světa nebo při čištění paměti, i když máš výkonný hardware.

Místo složitého kopírování a upravování čísel ti doporučuji použít ověřený generátor. Ten za tebe vypočítá ideální hodnoty podle tvé paměti RAM a typu serveru.


Pokud si chceš flagy nastavit sám, vycházíme z legendárních Aikar’s Flags, které jsou v komunitě standardem pro stabilitu a výkon.

Nejdůležitější jsou parametry -Xms (startovní RAM) a -Xmx (maximální RAM).

  • Pravidlo: Obě hodnoty nastav vždy na stejné číslo. Zabráníš tím zbytečným operacím při změně velikosti paměti za běhu.
  • Pterodactyl / Docker: Pokud máš server na hostingu v kontejneru (např. máš zaplaceno 10 GB RAM), nikdy nenastavuj Xmx na 100 %. Java potřebuje extra místo pro svá vlákna (Overhead).

Vyber si typ serveru, který používáš:

Standardní Aikarovy flagy. Vhodné pro drtivou většinu serverů (Paper, Purpur, Spigot). Nezapomeň změnit hodnotu RAM (první dva argumenty) podle potřeby.

Terminál
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5
-XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1
-Dusing.aikars.flags=[https://mcflags.emc.gs](https://mcflags.emc.gs) -Daikars.new.flags=true
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar
server.jar --nogui

Pokud používáš hosting s panelem Pterodactyl nebo Pelican (běží v Dockeru), pravděpodobně nebudeš moci použít flag -XX:+AlwaysPreTouch.

  • Problém: Tento flag nutí Javu při startu “osahat” a vynulovat celou přidělenou RAM. V kontejnerovém prostředí to může trvat dlouho, nebo to systém vyhodnotí jako zaseknutí a server zabije (Kill).
  • Řešení: Pokud se server po přidání flagů restartuje nebo padá při startu, odeber z příkazu část -XX:+AlwaysPreTouch.

Možná jsi slyšel o ZGC, novém Garbage Collectoru v Javě 21.

  • Pro servery s velkou RAM (nad 16 GB) může být ZGC lepší než G1GC (žádné záseky).
  • Pro běžné servery (do 12 GB) je G1GC (Aikar) stále stabilnější a ověřenější volbou. Pokud nevíš co děláš, zůstaň u Aikara.