No bullshit flags to start high-load minecraft servers on GraalVM. Makes the realistic improvements that can be made to Minecraft server garbage collection and overall speed without cramming in loads of useless junk.
Requires:
- Linux
- GraalVM
- Java 25
--add-modules=jdk.incubator.vector -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseZGC -XX:-ZProactive -XX:SoftMaxHeapSize=(memory-2048)M -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+EagerJVMCI -XX:+UseTransparentHugePages -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -Djdk.graal.CompilerConfiguration=enterprise -Djdk.graal.UsePriorityInlining=true -Djdk.graal.TuneInlinerExploration=1 -Djdk.graal.Vectorization=true -Djdk.graal.VectorizeSIMD=true -Djdk.graal.VectorizeHashes=true -Djdk.graal.EnterprisePartialUnroll=true
Breakdown of flags:
--add-modules=jdk.incubator.vector - Enables advanced vector support using SIMD on modern CPUs.
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions - Needed for other flags
-XX:+UseZGC - Enables the Z garbage collector.
-XX:-ZProactive - Higher throughput
-XX:SoftMaxHeapSize=(memory-2048)M - Attempts to optimize GC activity within your -Xmx. Not a hard cap.
-XX:+DisableExplicitGC - Prevents dumb plugins from trying to trigger GC
-XX:+AlwaysPreTouch - Makes memory access more consistent
-XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 - Sets code heap size & manages it more effectively
-XX:+EagerJVMCI - Makes sure GraalVM compiler is init before code runs
-XX:+UseTransparentHugePages - Reduces pressure on processor's TLB cache. Requires OS level setup!
-XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders - Reduces memory usage.
-Djdk.graal.CompilerConfiguration=enterprise - Uses enterprise compiler
-Djdk.graal.UsePriorityInlining=true -Djdk.graal.TuneInlinerExploration=1 - Enables priority inlining and tunes it
Djdk.graal.Vectorization=true -Djdk.graal.VectorizeSIMD=true -Djdk.graal.VectorizeHashes=true - Enables and tunes vectorization in graal
-Djdk.graal.EnterprisePartialUnroll=true - Optimizes partial unrolling