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.
