JVM Flags (Aikars Flags)
Hinter jedem Minecraft-Server läuft die Java Virtual Machine (JVM). Das ist das Programm, das deine Minecraft-Server-Software ausführt. Durch eine smarte Konfiguration der JVM mit sogenannten „Flags" (Startparameter) kannst du die Performance deines Servers deutlich verbessern. Der bekannteste und am häufigsten verwendete Satz an Flags sind die Aikars Flags.
Was sind JVM Flags?
JVM Flags sind Startparameter, die du Java beim Serverstart mitgibst. Sie sagen der JVM, wie sie mit Speicher umgehen soll, wann sie aufräumen soll (Garbage Collection) und wie sie optimieren soll. Stell es dir vor wie das Einstellen eines Motors: Der Motor funktioniert auch ohne Anpassungen, aber mit den richtigen Einstellungen läuft er deutlich besser.
Ohne optimierte Flags verwendet Java Standardeinstellungen, die nicht speziell auf Minecraft abgestimmt sind. Das kann zu Folgendem führen:
- Lag Spikes durch nicht optimierte Garbage Collection (Aufräumen ungenutzten Speichers)
- Ineffiziente Speichernutzung, wodurch dein Server mehr RAM verbraucht als nötig
- Längere Pausen, wenn die JVM beschließt, Speicher aufzuräumen
Warum Aikars Flags der Standard sind
Aikar ist ein bekannter Entwickler aus der Minecraft-Community (er ist auch einer der Entwickler hinter PaperMC). Er hat jahrelang die optimalen JVM-Einstellungen speziell für Minecraft-Server erforscht. Seine Flags sind inzwischen Industriestandard und werden von praktisch jedem Server-Hosting und jeder Server-Plattform empfohlen.
Die Aikars Flags sind speziell dafür entwickelt:
- Garbage Collection zu optimieren – Minecraft erzeugt und löscht ständig Objekte im Speicher (Chunks laden/entladen, Entities spawnen/despawnen). Aikars Flags nutzen den G1GC Garbage Collector mit Einstellungen, die dafür sorgen, dass das Aufräumen in kleinen, schnellen Schritten statt in großen Pausen passiert.
- Lag Spikes zu minimieren – Durch die Aufteilung der Garbage Collection in kleinere Stücke verhinderst du die berüchtigten „Freeze"-Momente, in denen der gesamte Server kurz stillsteht.
- Speicher effizienter zu nutzen – Die Flags sorgen dafür, dass Java den zugewiesenen RAM optimal nutzt, ohne zu viel Overhead zu verschwenden.
Wie stellst du JVM Flags über das HytaleNode-Panel ein?
Das Einrichten von JVM Flags bei HytaleNode ist einfach:
- Gehe zu mijn.hytalenode.nl und öffne deinen Server.
- Klicke auf den Tab Startup im linken Menü.
- Hier siehst du verschiedene Startvariablen. Suche das Feld für JVM Flags oder Additional Java Flags.
- Füge hier die Aikars Flags ein (siehe unten).
- Klicke auf Speichern und starte deinen Server neu.
Gute Nachricht: HytaleNode richtet die Aikars Flags standardmäßig für neue Server ein. Du musst also normalerweise nichts ändern. Aber es ist gut zu wissen, was sie tun und wie du sie bei Bedarf anpassen kannst.
Die Aikars Flags
Unten stehen die vollständigen Aikars Flags. Die -Xms- und -Xmx-Werte werden bei HytaleNode automatisch basierend auf dem deinem Server zugewiesenen RAM gesetzt.
-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
Erklärung der wichtigsten Flags
Du musst nicht alles verstehen, aber hier ist eine Übersicht, was die wichtigsten Flags tun:
- -XX:+UseG1GC – Verwendet den G1 (Garbage First) Garbage Collector. Das ist der beste Garbage Collector für Minecraft-Server, weil er große Speichermengen effizient mit minimalen Pausen verwalten kann.
- -XX:MaxGCPauseMillis=200 – Der Garbage Collector versucht, Pausen unter 200 Millisekunden zu halten. Das verhindert lange Freeze-Momente.
- -XX:+AlwaysPreTouch – Reserviert den gesamten RAM direkt beim Start, anstatt ihn schrittweise zuzuweisen. Das verhindert Verzögerungen später, wenn der Server mehr Speicher braucht.
- -XX:G1NewSizePercent=30 und G1MaxNewSizePercent=40 – Reserviert 30–40 % des Speichers für neue Objekte. Minecraft erzeugt ständig neue Objekte, daher sorgt ein größerer „Nursery"-Bereich für weniger häufige Garbage Collection.
- -XX:G1HeapRegionSize=8M – Teilt den Speicher in Regionen von 8 MB auf. Das ist optimiert für die Art, wie Minecraft Speicher nutzt.
- -XX:SurvivorRatio=32 – Bestimmt das Verhältnis für Objekte, die mehrere Garbage-Collection-Zyklen überleben. Der Wert 32 ist für Minecrafts Speichermuster optimiert.
- -XX:MaxTenuringThreshold=1 – Objekte, die eine Garbage Collection überleben, werden direkt in den Langzeitspeicher verschoben. Das ist effizient, weil die meisten Minecraft-Objekte entweder sehr kurz leben (Items, Particles) oder sehr lang (Chunks, permanente Entities).
- -XX:+ParallelRefProcEnabled – Verarbeitet Referenzen parallel auf mehreren CPU-Kernen, was den Aufräumprozess beschleunigt.
- -XX:+DisableExplicitGC – Verhindert, dass Plugins manuell eine vollständige Garbage Collection auslösen können, was Lag Spikes verursachen kann.
Häufige Fehler
- Zu viel RAM zuweisen – Mehr RAM ist nicht immer besser. Wenn du 2 GB brauchst, aber 8 GB zuweist, muss der Garbage Collector ein viel größeres Speichergebiet durchsuchen, was zu längeren Pausen führen kann. Nutze, was du brauchst, und halte dich an deinen HytaleNode-Plan.
- Xms und Xmx auf verschiedene Werte setzen – Setze
-Xms(Minimum RAM) und-Xmx(Maximum RAM) immer auf denselben Wert. Das verhindert, dass die JVM ständig Speicher anfordern und freigeben muss. HytaleNode macht das automatisch. - Andere Garbage Collectors verwenden – Wenn du nicht genau weißt, was du tust, bleib bei G1GC mit Aikars Einstellungen. Andere Collectors wie ZGC oder Shenandoah können in bestimmten Situationen besser sein, aber für die meisten Minecraft-Server sind Aikars Flags die beste Wahl.