If you're setting up a modded Minecraft server, the first question is always "how much RAM do I need?" Too little and your server freezes every few minutes. Too much and you're paying for memory that sits idle.

This guide gives you a starting number for every major modpack, then shows you how to measure what your server actually uses, which matters more. The same modpack with four friends at view distance 6 is a completely different machine than a public server with 30 people exploring fresh terrain.

What RAM Actually Does on a Minecraft Server

Minecraft runs on Java, and Java doesn't use memory the way most programs do. When you "allocate 8 GB," you're setting the size of the heap, a pool the server fills with objects and periodically cleans out. That cleanup is garbage collection (GC), and GC is the thing that actually hurts you.

What fills the heap:

When the heap is comfortably sized, GC runs often, finishes in a few milliseconds, and nobody notices. When it's too small, the server is constantly out of room and Java falls back to a full "stop-the-world" collection that freezes every player at once for seconds. That's the stutter people blame on their internet. It's not the network. It's GC.

This is also why more RAM doesn't make a server faster. Once you have enough headroom that GC isn't struggling, extra memory buys you exactly nothing in TPS. RAM is a floor to clear, not a dial to turn up.

Allocated RAM vs. Plan Size: Read This Before You Buy

This one trips up almost everyone. The heap is not the only memory the server needs. On top of your -Xmx value, the Java process also uses:

Together that's roughly 1–1.5 GB above your heap on a modded server. So if you buy an 8 GB plan and set -Xmx8G, the process reaches for about 9.5 GB, crosses its limit, and gets killed. The server just dies. Because the kill happens outside Java, there's no error in the log explaining why. If your server vanishes with no crash report, this is almost always the cause.

The rule: set your heap to about 80% of your plan size. The remaining 20% isn't wasted. It's what keeps the JVM alive.
Plan sizeSet heap to
4 GB-Xmx3G
6 GB-Xmx5G
8 GB-Xmx6G
12 GB-Xmx10G
16 GB-Xmx13G

Paper, Forge, or Fabric: Which One You're Running Changes Everything

Before the numbers mean anything, you need to know what server software you're on, because these cannot run each other's content:

If a guide tells you it benchmarked ATM10 "on Paper," treat the whole page as unreliable. Paper cannot load ATM10 in the first place. In the table below, the plugin row is Paper; every modded row is Forge, NeoForge, or Fabric.

RAM Requirements by Modpack

These are heap figures (your -Xmx) alongside the plan size that leaves room for the JVM. They assume default view distance 10 and the player counts shown. Modpacks change fast, so treat this as a starting point and then measure. The next section shows you how.

ModpackMCHeapPlan sizePlayers
Vanilla / Paper (plugins only)1.214–6 GB6–8 GB20–40
Fabric + performance mods1.213–4 GB4–6 GB10–20
Create: Above and Beyond1.16.55–6 GB7–8 GB8–12 ⚙
Pixelmon1.20.26–8 GB8–10 GB10–15
RLCraft1.12.25–6 GB7–8 GB5–10 ⚙
Vault Hunters 31.18.28–10 GB10–12 GB5–10
Better MC (BMC4)1.20.18–10 GB10–12 GB8–12
FTB Direwolf201.216–8 GB8–10 GB5–10
Enigmatica 101.218–10 GB10–12 GB5–8
All the Mods 10 (ATM10)1.2110–12 GB13–16 GB5–10
GregTech: New Horizons1.7.106–8 GB8–10 GB3–6 ⚙

= CPU-limited before it is RAM-limited. These packs tick huge numbers of machines or entities. Buying more memory will not raise their player ceiling; a faster CPU core will.

Note how little the version column moves with the year: RLCraft is 1.12.2 and GTNH is 1.7.10, and both are lighter on memory than a modern 1.21 pack with half the mod count. Post-1.18 world height is a big part of why.

How to Find Your Actual Number

The table is a starting point. Your server is the real answer, and finding it takes about a week:

  1. Start from the pack's own recommendation. CurseForge and Modrinth list a suggested allocation on every modpack page. For a handful of players, the server needs roughly that much heap; for 10+, add a few GB.
  2. Add the JVM overhead to get your plan size: heap ÷ 0.8, per the rule above.
  3. Run it for a week of normal play, including at least one session where someone explores new terrain. Chunk generation is the heaviest thing your server ever does.
  4. Read the memory graph, then adjust: up if you see the symptoms below, down if you're sitting at half usage after a busy evening.

Reading memory the right way

Install spark (it works on Paper, Forge, NeoForge, and Fabric) and run /spark heapsummary. Or just watch the memory graph in your panel.

Now the part that confuses everyone: a Java heap that looks 90% full is usually fine. Java doesn't tidy up until it needs the space, so used memory climbs steadily, drops sharply during a collection, and climbs again. That sawtooth is a healthy server.

What matters is the level right after a collection, not the peak. If usage falls back to 40–60% after each GC, you have plenty. If it only falls to 85–90% and immediately climbs again, the server is short on memory and about to start stuttering.

Is It RAM, or Is It CPU?

Both look like "lag," but they need opposite fixes. Buying RAM for a CPU problem is the most common way people waste money on hosting.

It's RAM if…

It's CPU if…

If the symptoms are in the second list, more RAM will change nothing.

The Cheapest Fix Nobody Tries First: View Distance

Before buying more memory, open server.properties and look at two settings:

Try view distance 8 and simulation distance 6 before you upgrade. On a crowded server it often does more than adding 4 GB.

The Quick Rule

If you just want a number to start from, these are plan sizes, not heap:

Past 16 GB, the Minecraft server itself is rarely the reason. The things that genuinely justify more are high view distances on a populated server, world pregeneration, live map renderers like Dynmap or BlueMap, and running several servers on one machine. If none of those apply to you and 16 GB isn't enough, you have a CPU problem or a badly behaved mod, and more memory won't touch either.

RAM Isn't Everything: CPU Matters More Than You Think

Minecraft's tick loop is single-threaded, so TPS depends on how fast one core is, not on how many you have or how much memory you bought.

The order matters, though. Clear the RAM floor first, then spend everything else on CPU. A fast Ryzen core with a 6 GB heap will beat an old Xeon with 16 GB on any pack that fits in 6 GB, but give that same Ryzen an ATM10 world and it will still stutter, because no clock speed rescues a heap that's too small to hold the pack. Once you're past the floor, extra memory does nothing and extra clock speed does everything.

At Revitalize, every game node runs modern AMD Ryzen processors with high single-clock boost, not repurposed server Xeons. You can see the exact hardware on our pricing page.

JVM Flags That Actually Help

Don't use default JVM args. These Aikar-optimized flags are the community standard and reduce GC stutter significantly:

-Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch
-XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4
-XX:G1MixedGCLiveThresholdPercent=90
-XX:G1RSetUpdatingPauseTimePercent=5
-XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem
-XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=30
-XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M
-XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15
-Dusing.aikars.flags=mcflags.emc.gs
-Dfile.encoding=UTF-8

Set -Xms and -Xmx to the same value as each other. A fixed heap avoids the JVM resizing it mid-tick. But set them to about 80% of your plan size, not the full amount. The example above is tuned for an 8 GB plan. Setting -Xmx8G on an 8 GB plan is the mistake from earlier in this guide: it leaves nothing for metaspace and off-heap buffers, and the server gets killed with no crash report.

If your heap is 12 GB or larger

The flags above are the standard set, which is tuned for heaps under 12 GB. Large heaps need a bigger young generation and bigger regions, or you'll get long pauses anyway. For -Xmx12G and up, change these five values:

-XX:G1NewSizePercent=40      (was 30)
-XX:G1MaxNewSizePercent=50   (was 40)
-XX:G1HeapRegionSize=16M     (was 8M)
-XX:G1ReservePercent=15      (was 20)
-XX:InitiatingHeapOccupancyPercent=20  (was 15)

This matters for ATM10, Enigmatica, and anything else in the 13–16 GB tier. Running a 14 GB heap on the small-heap flags is a common reason a well-specced server still stutters.

Our custom panel includes a built-in Java flags tuner with both presets, so you don't have to paste any of this by hand.

Storage Speed Is the Hidden Bottleneck

Modded servers hammer the disk during chunk generation, especially with terrain mods like Biomes O' Plenty or Terralith. NVMe vs SATA SSD is the difference between 30-second world loads and 3-minute ones. Avoid spinning rust entirely. Every Revitalize server uses NVMe storage, with no exceptions and no "SSD cache" tiers.

How Player Count Changes the Math

A player sitting in an already-built base costs roughly 100–200 MB. A player walking into unexplored terrain costs several times that, because the server is generating and holding new chunks as fast as they move. Player count matters far less than how spread out everyone is. Ten people in one base is cheaper than three people in three different dimensions.

For a heavy pack like ATM10, as plan sizes:

That last line is the important one. Past roughly 20 concurrent players on a heavy pack, you stop running out of memory and start running out of tick budget. The server can't finish its work inside the 50 ms it has per tick. No amount of RAM fixes that.

If you're running a public server with 20+ concurrent, you need to upgrade your CPU allocation too, not just RAM. Our VPE (Virtual Pulse Environment) lets you resize both independently in the panel without opening a ticket.

Need a server with the exact specs your modpack needs?

Use our server builder to pick RAM, CPU cores, and NVMe storage. No rigid tiers. No upsells.

Build Your Server →
Use code REVITALIZE for 50% off your first month. Excludes the $5 Realm packages, which are already marked down

Frequently Asked Questions

Can I run a modded server on 2 GB of RAM?

No. After the JVM takes its share you'd have well under 2 GB of usable heap, and a modpack's registries alone can eat most of that before anyone joins. It will thrash in garbage collection and die on the first burst of chunk generation. 4 GB is the realistic floor for a light Fabric pack; 6–8 GB for anything mainstream.

Is 16 GB of RAM overkill for a Minecraft server?

For a plugin server or a light pack, yes. You'd be paying for memory that never gets touched. For ATM10, Enigmatica, or Vault Hunters with 10+ players, 16 GB is the working baseline, not overkill.

Why did my server crash with no error in the log?

Almost always because -Xmx was set to your full plan size. The Java process needs 1–1.5 GB beyond the heap, so it crosses its limit and gets killed from outside, which means Java never gets the chance to write a crash report. Set your heap to about 80% of your plan.

My memory graph is always near 100%. Is that bad?

Usually not. Java only cleans up when it needs room, so usage climbs, drops sharply at each garbage collection, and climbs again. Watch the level right after a collection: falling back to 40–60% is healthy, and only falling to 85–90% means you're genuinely short.

Can I run a modpack like ATM10 on Paper for better performance?

No. Paper and Purpur run plugins, not mods, and can't load a Forge or NeoForge pack at all. For modded performance, install mods like FerriteCore and Lithium (or their Forge equivalents) on your existing loader instead.

Does more RAM mean better performance?

Up to a point. Once you have enough RAM to avoid GC pressure, adding more doesn't improve TPS. CPU clock speed becomes the bottleneck.

What happens if I run out of RAM on my server?

The server hitches, TPS drops to single digits, and eventually the JVM throws an OutOfMemoryError and crashes. Watch your memory usage. Our Pulse monitoring sends alerts if you're approaching your limit.