ATM10 Optimization: The Best JVM Arguments for All The Mods 10

Published on

Tested JVM arguments specifically for All The Mods 10 servers. Includes memory allocation, garbage collection tuning, and startup flags that actually make a difference.

Written by Space-Node Team – Infrastructure Team – 15+ years combined experience in game server hosting, VPS infrastructure, and 24/7 streaming solutions. Read author bio →

All The Mods 10 is one of the heaviest modpacks you can run on a Minecraft server. With 400+ mods, Java's memory management becomes the single biggest factor in whether your server runs smoothly or becomes a slideshow every 30 seconds.

The default JVM arguments that most hosting panels set are generic. They work for vanilla Minecraft, but ATM10 needs specific tuning. Here are the arguments we've tested and verified on our Ryzen 9 hardware.

The Recommended ATM10 JVM Arguments

-Xms8G -Xmx8G -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

Let me break down what each group does and why it matters for ATM10 specifically.

Memory Allocation: -Xms and -Xmx

-Xms8G -Xmx8G

Setting both minimum and maximum to the same value prevents Java from constantly resizing the heap. For ATM10, 8GB is the minimum for up to 5 players. If you're running 10+ players, use 12GB or 16GB.

| Player Count | Minimum RAM | Recommended RAM | Space-Node Plan | |-------------|-------------|-----------------|-----------------| | 1-5 | 8GB | 10GB | MC Special 2 (12GB) | | 5-10 | 10GB | 12GB | MC Special 2 (12GB) | | 10-20 | 12GB | 16GB | MC Professional+ (16GB) | | 20+ | 16GB | 24GB+ | MC Expert (24GB) |

Never set -Xmx higher than your actual available RAM minus 2GB (for the OS and JVM overhead).

Garbage Collection: G1GC Settings

ATM10 creates enormous amounts of short-lived objects. Every mod that processes items, updates machines, or renders effects generates garbage that Java needs to clean up. The G1 garbage collector is the best choice for modded Minecraft.

-XX:MaxGCPauseMillis=200 tells G1GC to target garbage collection pauses under 200 milliseconds. This prevents the 1-2 second freezes that kill TPS during heavy automation.

-XX:G1NewSizePercent=30 and -XX:G1MaxNewSizePercent=40 allocate more memory to the "young generation" where short-lived objects live. ATM10 mods create tons of these, so a larger young generation means fewer expensive "full GC" events.

-XX:G1HeapRegionSize=8M increases the region size for better handling of large allocations, which modded Minecraft produces frequently.

Pre-Touch and Explicit GC

-XX:+AlwaysPreTouch -XX:+DisableExplicitGC

AlwaysPreTouch tells Java to map all allocated memory at startup instead of lazily. This adds 10-15 seconds to boot time but eliminates memory allocation stutters during gameplay.

DisableExplicitGC prevents mods from calling System.gc() manually, which would cause unnecessary full garbage collection pauses.

What About ZGC or Shenandoah?

We tested both alternative garbage collectors with ATM10. Results were mixed:

| GC | Average TPS | GC Pause (avg) | GC Pause (peak) | Memory Overhead | |----|------------|----------------|------------------|-----------------| | G1GC (tuned) | 19.4 | 85ms | 210ms | Baseline | | ZGC | 18.8 | 12ms | 45ms | +15% | | Shenandoah | 18.6 | 18ms | 80ms | +12% |

ZGC has lower pause times but slightly worse throughput. For ATM10, the G1GC tuning above gives the best overall TPS. ZGC is worth trying if you notice stutter but your average TPS is fine.

Server Properties That Matter

Beyond JVM arguments, these server.properties settings make a big difference for ATM10:

view-distance=8
simulation-distance=6
max-tick-time=120000

Keep view distance at 8 or lower. ATM10's worldgen is expensive, and rendering 10+ chunks per player will tank your TPS. Simulation distance at 6 keeps modded machines working in loaded chunks without overloading the server.

Set max-tick-time to 120000 (2 minutes) to prevent the server from crashing during heavy world generation or initial loading.

Testing Your Configuration

After setting these arguments, use Spark profiler to monitor performance:

/spark tps
/spark profiler start --timeout 300

Run the profiler for 5 minutes during normal gameplay and check the results. If you see GC pauses over 500ms regularly, increase your heap size. If TPS drops below 18 during automation, you may need a higher-tier hosting plan with more allocated RAM and CPU resources.

The combination of proper JVM arguments and Ryzen 9 7950X3D hardware is what makes ATM10 playable at scale. Generic hosting with default arguments simply can't keep up with 400+ mods.

Space-Node Team

About the Author

Space-Node Team – Infrastructure Team – Experts in game server hosting, VPS infrastructure, and 24/7 streaming solutions with 15+ years combined experience.

Since 2023
500+ servers hosted
4.8/5 avg rating

Our team specializes in Minecraft, FiveM, Rust, and 24/7 streaming infrastructure, operating enterprise-grade AMD Ryzen 9 hardware in Netherlands datacenters. We maintain GDPR compliance and ISO 27001-aligned security standards.

View Space-Node's full team bio and credentials →

Start Minecraft Server in Minutes

Join content creators worldwide who trust our minecraft infrastructure. Setup is instant and support is always available.

ATM10 Optimization: The Best JVM Arguments for All The Mods 10