Change Java settings
Set the Java memory, startup flags and Java version your Minecraft Java server starts with.
In the dashboard
The Java panel on a server's Software tab sets three things a Java server starts with: how much memory Java may use for the game (the heap), the startup flags that tune Java's garbage collector, and the Java version. Saving never restarts the server. Your changes apply the next time it starts.
Before you begin
Section titled Before you begin- The panel is there for servers that run on Java. A Bedrock server does not have it.
- On a server someone shared with you, reading the panel needs
startup.readand saving needsstartup.update. The dashboard's permission list offers neither, so the owner can grant them only through the API. - Each save counts towards the limit of 8 software actions from one account on a server in 10 minutes.
To open the panel:
- In the dashboard, go to Container Apps and open the server, then the Software tab.
- Select Java.
The Java settings card shows the Java version the server runs, such as Java 21, next to its title.
Set the Java memory
Section titled Set the Java memoryJava needs memory beyond the heap, and the server is stopped if it runs out of memory altogether. So the heap starts below your plan's memory, and you can raise it:
| Setting | Value |
|---|---|
| Default on a paid plan | 80% of the plan's memory, rounded down to 16 MB |
| Default on a free server | 2048 MB |
| Lowest | Half the plan's memory, rounded down to 256 MB, and never less than 1024 MB |
| Highest | The plan's memory |
For example, on a plan with 4096 MB the default is 3264 MB, and the heap can go from 2048 MB to 4096 MB.
- Under Java memory, move the slider. It moves in steps of 256 MB, and it also stops at the default and at the full plan.
- Or select the button under the slider that uses the default or the full plan.
- Or type a number of megabytes in Exact size.
- Select Save Java settings.
A badge next to Java memory says Default, Full plan or Custom.
Warning
With the heap at the full plan, Java has little room left for everything else it needs, and a busy server can run out of memory and be stopped. If that happens, go back to the default.
When your plan's memory changes, or a free server moves to a paid plan, the heap goes back to the new plan's default.
When the heap reaches 12 GB, four of the startup flags that size the young generation switch to larger values. The panel says so under Exact size.
Choose the startup flags
Section titled Choose the startup flagsThe startup flags are Aikar's flags, a set widely used to keep Minecraft's garbage collection smooth. All of them are on by default. You can turn off the ones you do not want, but you cannot add flags of your own.
- Under Startup flags, choose Recommended for every flag, Off for none, or Custom.
- To see or change single flags, select Show flags. Ticking or clearing a flag switches to Custom.
- Select Save Java settings.
Next to the choice, the panel counts the flags that are on, such as 19 of 19 flags on · Java 21.
A flag that your Java version does not accept is greyed out, with the reason, such as Needs Java 16 or newer; this server runs Java 11. Unlock experimental options is added automatically while an experimental flag is on.
Startup flags are there for Minecraft Java software only. On other Java software the panel says Startup flags are offered to Minecraft Java software only.
Change the Java version
Section titled Change the Java version- Choose a Java in Java version. The list puts the newest first and marks the current one
(current). Next to each Java it names the Minecraft releases that Java is for. - Select Save Java settings.
| Java | Minecraft releases |
|---|---|
| Java 21 and newer | 1.20.5 and newer |
| Java 17 | 1.17 to 1.20.4 |
| Java 8 | 1.16.5 and older |
The server does not start on the wrong Java. When you change the Minecraft version under Server software, choose the Java there in the same step.
See the startup command
Section titled See the startup commandSelect Show startup command to see the full command the next start runs, with the heap and flags in place. Select Copy startup command to copy it.
Reset the heap and flags
Section titled Reset the heap and flagsReset to defaults… appears once you have changed the heap or the flags.
- Select Reset to defaults….
- Select Reset Java settings.
The heap and the flags go back to the plan's defaults on the next start. The Java version stays as it is.
Result
Section titled ResultA message says Java settings saved. They apply on the next start., or Heap and startup flags reset to their defaults. They apply on the next start. after a reset. Restart the server from the console to use them.
Troubleshooting
Section titled Troubleshooting- No Java settings here
- The server cannot use the panel.
This server does not run on Java, so there is no heap or startup flags to set.means it runs other software.The startup command sets its own heap; ask support to change it.means its startup command names a fixed heap. Ask support to change it. - Could not load the Java settings
- On a server shared with you, you need
startup.read. Otherwise, select Try again. Enter a whole number of megabytes from 2048 to 4096.- The number in Exact size is outside what your plan allows. The message gives your plan's range.
- Could not save the Java settings
- The panel shows the reason, such as a flag your Java version does not accept. Change that setting and save again.
- The server does not start after a change
- Check that the Java version fits the Minecraft version, using the table above. Then check the console for the error.
- The server stops because it ran out of memory
- Lower the heap to the default, or move to a larger plan.
Too many requests for this action. Please wait and try again.- A server accepts 8 software actions from one account in 10 minutes. The response says how many seconds to wait.
Related
Section titled RelatedWith the API
Section titled With the APIGET /api/v1/client/servers/{uuid}/software/jvm returns what the panel shows:
supportedfalsewhen the server cannot use the panel, with the reason inunsupported_reason.memorysupported(whether the heap can change),heap_mb,default_mb,min_mb,max_mb,stops(the slider's positions),is_default,freeandsize_tier(small, orlargefrom 12 GB).flagssupported,java_major,selected(the ids that are on),defaults,is_defaultandcatalog. Each catalog entry has anid,label,description,group,flag(what it adds to the command),available,unavailable_reason,experimentalandselected.runtimesupported, the currentslugandjava, andoptions, each with aslug,javaandname.effective_command- The startup command the next start runs.
PATCH the same path with any of these fields:
| Field | What it does |
|---|---|
heap_mb |
The heap, a whole number of megabytes from min_mb to max_mb. |
flags |
The ids of the flags to turn on, from catalog. [] turns them all off. |
runtime_template_slug |
A slug from runtime.options, such as java-21. |
reset |
true drops the stored heap and flags, as Reset to defaults… does. The other fields are then ignored. |
curl -X PATCH https://api.coritan.com/api/v1/client/servers/$SERVER/software/jvm \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"heap_mb": 3072, "flags": ["g1gc", "parallel-ref-proc", "max-gc-pause", "disable-explicit-gc"]}'
The response is the new view, as GET returns it, plus synced, which says whether we could pass the new settings on straight away. When it is false, they still apply at the next start. To go back to the recommended flags but keep your heap, send the defaults list as flags.
| Flag id | Label | Adds |
|---|---|---|
vector-api |
Vector API (SIMD) | --add-modules=jdk.incubator.vector, on Java 16 and newer |
g1gc |
G1 garbage collector | -XX:+UseG1GC |
parallel-ref-proc |
Parallel reference processing | -XX:+ParallelRefProcEnabled |
max-gc-pause |
Pause target 200 ms | -XX:MaxGCPauseMillis=200 |
unlock-experimental |
Unlock experimental options | -XX:+UnlockExperimentalVMOptions |
disable-explicit-gc |
Ignore System.gc() | -XX:+DisableExplicitGC |
g1-heap-waste |
Heap waste 5% | -XX:G1HeapWastePercent=5 |
g1-mixed-gc-count |
Mixed collection target 4 | -XX:G1MixedGCCountTarget=4 |
ihop |
Start marking at 15% | -XX:InitiatingHeapOccupancyPercent=15, on Java 28 and older |
g1-mixed-live-threshold |
Mixed collection live threshold 90% | -XX:G1MixedGCLiveThresholdPercent=90 |
g1-rset-updating |
Remembered-set updating 5% | -XX:G1RSetUpdatingPauseTimePercent=5 |
survivor-ratio |
Survivor ratio 32 | -XX:SurvivorRatio=32 |
perf-disable-shared-mem |
No perf shared memory | -XX:+PerfDisableSharedMem |
max-tenuring |
Tenuring threshold 1 | -XX:MaxTenuringThreshold=1 |
aikar-marker |
Aikar's flags marker | -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true |
g1-new-size |
Young generation minimum | -XX:G1NewSizePercent=30, or 40 from 12 GB |
g1-max-new-size |
Young generation maximum | -XX:G1MaxNewSizePercent=40, or 50 from 12 GB |
g1-heap-region |
Heap region size | -XX:G1HeapRegionSize=8M, or 16M from 12 GB |
g1-reserve |
Heap reserve | -XX:G1ReservePercent=20, or 15 from 12 GB |
g1-mixed-live-threshold, g1-new-size and g1-max-new-size are experimental: when any of them is on, unlock-experimental is added for you. A flag the startup command already carries is not added twice.
A request the server cannot take answers 400 with the reason, such as Send heap_mb, flags, runtime_template_slug or reset, heap_mb must be between 2048 and 4096 MB on this plan, Unknown startup flag 'xyz'; only the listed flags can be used, Vector API (SIMD): Needs Java 16 or newer; this server runs Java 11. or No Java runtime called 'java-99' is available. A server that is not on a Java runtime answers This server does not run on a Java runtime; changing it is a software change: change it under Server software instead.
Reading needs startup.read and changing needs startup.update.
API operations on this page
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/client/servers/{uuid}/software/jvm | The heap slider and the allowlisted startup flags, as the panel shows them |
PATCH | /api/v1/client/servers/{uuid}/software/jvm | Move the heap, pick startup flags from the catalog, or reset both |