ATM10 Optimization: The Best JVM Arguments for All The Mods 10
We tested All The Mods 10 on over a dozen hardware configurations. Here is what we learned: the standard -Xmx12G -Xms12G launch arguments that every forum post recommends are leaving enormous performance on the table. This guide gives you the flags we actually use on Space-Node's production ATM10 servers.
Why ATM10 Is Different from Other Modpacks
ATM10 runs on NeoForge with over 400 mods active simultaneously. The JVM is initialising thousands of classes at startup, managing hundreds of mod threads, and dealing with GC pressure that would make a standard server weep. The default Java garbage collector — G1GC — works fine for vanilla servers but struggles with the object allocation rate that 400+ mods generate.
The solution is switching to ZGC (Z Garbage Collector) combined with a set of carefully tuned flags developed originally by the Minecraft community and validated by us on real workloads.
The Recommended JVM Arguments for ATM10
java -Xmx12G -Xms12G \
-XX:+UseZGC \
-XX:+ZGenerational \
-XX:+AlwaysPreTouch \
-XX:+DisableExplicitGC \
-XX:+PerfDisableSharedMem \
-XX:+UseFastUnorderedTimeStamps \
-Dfml.readTimeout=180 \
-Dfml.loginTimeout=180 \
-jar server.jar nogui
What Each Flag Does
-XX:+UseZGC -XX:+ZGenerational — ZGC with generational mode handles ATM10's allocation spikes dramatically better than G1GC. You will notice shorter freeze events during chunk generation and mob spawning.
-XX:+AlwaysPreTouch — Forces Java to allocate all RAM at startup instead of lazily. Prevents GC pauses caused by memory page faults during gameplay.
-XX:+DisableExplicitGC — Prevents mods from calling System.gc() directly, which can cause full-heap stop-the-world pauses at the worst possible moments.
-XX:+PerfDisableSharedMem — Disables performance monitoring shared memory, reducing OS-level interference.
RAM Recommendations by Player Count
| Players | Minimum RAM | Recommended RAM | Notes | |---|---|---|---| | 1–5 | 8 GB | 10 GB | Solo/small group | | 5–15 | 10 GB | 14 GB | Add buffer for chunk loading | | 15–30 | 14 GB | 18 GB | Full activity scenarios | | 30+ | 20 GB | 24 GB | Dedicated server territory |
Server Configuration Tweaks
Beyond JVM flags, these server.properties settings matter for ATM10:
view-distance=8
simulation-distance=6
max-chained-neighbor-updates=1000
Lower simulation distance is the single biggest TPS improvement for heavily modded servers. Most ATM10 players will never notice the difference between simulation-distance=8 and simulation-distance=6, but your TPS will.
The Hardware Underneath Matters Too
JVM flags can only optimise what the hardware supports. ATM10's mod loading benefits dramatically from the L3 cache size of the Ryzen 9 7950X3D — data that would cause cache misses and memory stalls on older Xeon chips stays in cache. Space-Node's ATM10 servers run on this hardware as standard.
If you are experiencing persistent TPS issues on another host even after applying these flags, the problem may not be your configuration — it may be the processor you are sharing resources with.
Start an ATM10 server on Space-Node — Ryzen 9 powered from €0.90/month