Aikar's flags forklart
Hva er Aikar's flags, hvorfor bruke dem, og hvordan de forbedrer Minecraft-server-ytelse. Komplett referanse.
Komplett guide til Aikar's flags. Hva de er, hvorfor de gjør Minecraft-servere raskere, hver flagg forklart, anbefalte sett per RAM-størrelse, og når moderne alternativer som ZGC eller Shenandoah passer bedre.
Hva er Aikar's flags?
Aikar's flags er et sett Java VM-argumenter optimalisert for Minecraft-servere. Skapt av Daniel "Aikar" Ennis, en av kjerneutviklerne bak Paper-prosjektet. Settet ble lansert i 2018 og har siden stått som de facto-standard for alle seriøse Minecraft-servere som kjører på Java 8 til 17.
De løser et spesifikt problem: standard JVM-konfigurasjon er optimalisert for langlevde server-applikasjoner som webservere, mens Minecraft har svært mye kortlevd objekt-allokering (chunks lastes og unloades, entiteter spawnes og dør). Standard garbage collector (GC) jobber dårlig med dette mønsteret og lager merkbare lag-spikes.
De fulle flaggene
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200
-XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-XX:G1NewSizePercent=30
-XX:G1MaxNewSizePercent=40
-XX:G1HeapRegionSize=8M
-XX:G1ReservePercent=20
-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
-Daikars.new.flags=true
Kritiske flagg forklart
- -XX:+UseG1GC. Bruker Garbage-First Collector. G1GC deler heap inn i mange små regioner og kan gjøre delvis garbage collection, noe som gir kortere pauser enn ParallelGC eller SerialGC
- -XX:MaxGCPauseMillis=200. Begrenser GC-pauser til 200 ms. JVM justerer GC-strategi for å holde dette målet. Minecraft tikker 20 ganger per sekund, så en pause på 200 ms gir maks 4 missed ticks ved verste tilfelle
- -XX:+AlwaysPreTouch. Allokerer hele heap-en ved oppstart i stedet for lazy. Gir treg første start, men jevnere ytelse etterpå fordi OS-en ikke trenger å allokere physiske sider underveis
- -XX:G1NewSizePercent=30. Setter minimum 30 % av heap til Young Generation. Minecraft genererer mye kortlevd objekt-allokering, så Young Generation må være stor nok til å absorbere dette uten å konstant promote objekter til Old
- -XX:+DisableExplicitGC. Ignorerer plugin-kall til
System.gc(). Mange plugins kaller dette i feil tro at det hjelper, men det forårsaker faktisk hikke. JVM vet best - -XX:G1HeapRegionSize=8M. Setter region-størrelse til 8 MB. Standard ville vært større for store heaps, men Minecraft-objekter er ofte små og 8M gir bedre granularitet
- -XX:InitiatingHeapOccupancyPercent=15. Starter mixed GC når heap er 15 % full. Standard er 45 %, men for Minecraft vil vi heller GCe oftere og raskere enn å vente på en stor pause senere
- -XX:G1MixedGCCountTarget=4. Spre Mixed GC over 4 sykluser, som reduserer maks pause
- -XX:SurvivorRatio=32. Mindre Survivor-områder, så Young Generation har mer Eden-plass for ny allokering
- -XX:MaxTenuringThreshold=1. Promoter objekter til Old Generation etter kun 1 GC-syklus. For Minecraft betyr det at vi raskt skiller "kortlevde" fra "langlevde", og GC blir mer effektiv
For mindre enn 12 GB RAM
Aikar's standard er optimalisert for større heaps. For servere med under 12 GB justerer du:
-XX:G1NewSizePercent=40
-XX:G1MaxNewSizePercent=50
-XX:G1HeapRegionSize=16M
-XX:G1ReservePercent=15
-XX:InitiatingHeapOccupancyPercent=20
Endringene gir Young Generation større andel av en mindre heap, og større regioner reduserer overhead.
For 12 GB og oppover
Bruk standard-settet uten endringer. Det er testet på alt fra 12 GB til 64 GB heaps og fungerer godt på hele området.
Bruk en generator
I stedet for å huske flagg, bruk flags.sh for å generere riktig sett basert på din RAM, Java-versjon og bruksmønster. Generatoren har også presets for ZGC og Shenandoah hvis du vil eksperimentere.
Java 17 vs Java 21
Aikar's flags fungerer på Java 8 til 21, men nyere Java-versjoner har betydelig forbedret G1GC og introdusert nye GC-er.
- Java 17 LTS. Solid valg for de fleste Minecraft-versjoner. Aikar's flags fungerer som forventet
- Java 21 LTS. Krevet av Minecraft 1.20.5+. Kommer med Generational ZGC, som er svært lovende for store servere
Hvis du kjører Minecraft 1.20.5 eller nyere, bruk Java 21. For eldre versjoner er Java 17 et trygt valg.
Når ZGC eller Shenandoah er bedre enn G1GC
For svært store servere (24 GB+ heap, 100+ samtidige spillere), kan moderne lav-pause-GC-er gi bedre ytelse:
ZGC (Generational, Java 21+)
-XX:+UseZGC
-XX:+ZGenerational
-XX:+AlwaysPreTouch
-XX:-ZUncommit
-XX:+UseLargePages
-XX:+ParallelRefProcEnabled
-XX:+DisableExplicitGC
Sub-millisekund pauser uavhengig av heap-størrelse. Bytter pause-tid mot litt høyere CPU-bruk og throughput. Anbefalt for store community-servere hvor lag-spikes er uakseptabelt.
Shenandoah (Java 17+)
-XX:+UseShenandoahGC
-XX:+UnlockExperimentalVMOptions
-XX:+AlwaysPreTouch
-XX:+DisableExplicitGC
Lignende ZGC, men implementert litt annerledes. Mindre testet på Minecraft enn ZGC, men kan gi gode resultater på AMD-baserte servere.
Slik ser du om GC-en din kjører bra
Aktiver GC-logging midlertidig for å diagnostisere ytelse:
-Xlog:gc*:file=gc.log:time,uptime:filecount=5,filesize=10M
Etter en time med trafikk, sjekk gc.log for:
- Lengste pause. Bør være under 200 ms for G1GC, under 10 ms for ZGC
- Hyppighet av Mixed GC. Hvis serveren ofte kjører Full GC, har du for lite RAM
- Promotion failure. Hvis du ser "Promotion failed", trenger du større Old Generation eller mer total RAM
Verktøyet GCEasy kan analysere logfilen din gratis og foreslå justeringer.
Vanlige misforståelser
"Mer RAM er alltid bedre"
Nei. Veldig stor heap betyr lengre GC-pauser med G1GC. Sweet spot for Vanilla/Paper er 4-8 GB. For store modpacks 8-16 GB. Over det, vurder ZGC.
"Jeg må sette flaggene selv"
Hos oss er Aikar's flags standard i den universelle Minecraft-egg-konfigurasjonen vår. Du trenger ikke gjøre noe selv. Hvis du vil eksperimentere med ZGC eller Shenandoah, kan du legge til egne flagg i JVM_OPTS-feltet under Startup-fanen.
"Aikar's flags fikser tps-drops"
Bare delvis. Flaggene fikser GC-relaterte lag-spikes. Lave TPS over tid skyldes som regel for mange entiteter, dårlig optimaliserte plugins, eller for høy view-distance. Se vår optimaliserings-guide for resten.
Hos BesteSpillhosting
Aikar's flags er aktivert som standard på alle våre Minecraft-servere via den universelle eggen. RAM-baserte tilpasninger gjøres automatisk, så du får riktig sett uten å tenke på det. For avanserte brukere tilbyr vi mulighet til å overstyre via Startup-fanen.
Full Minecraft-optimaliserings-guide →
Vær blant de første til å anmelde oss
Vi er helt nye, ekte anmeldelser vises her så snart de første kundene har skrevet dem. Prøv oss risikofritt i 30 dager og del din ærlige opplevelse.
Skriv en anmeldelse på TrustpilotKlar for din egen spillserver?
Velg produktet som passer, klar på 60 sekunder, 30 dagers åpent kjøp.