Launch options¶
The main screen shows four facts: memory, window, Java and instance. They are changed in Settings, on the Game, Java and Instance tabs.
Memory¶
Settings ▸ Game ▸ Memory is a slider in steps of 256 MB. Use recommended returns to the computed value. The main screen adds "(recommended)" while you have not set your own.
| Value | |
|---|---|
| Default | The recommendation below |
| Slider minimum | 1 GB (or the maximum, on a machine where that is lower) |
| Slider maximum | 75% of installed memory, rounded down to 256 MB |
| Hard floor | 512 MB |
How the recommendation is computed¶
For the legacy versions Xol offers today:
- Take a share of installed memory: 30% on machines with 8 GB or less, 25% above that.
- Keep it between 1 GB and 3 GB.
- Round down to a multiple of 256 MB.
- Never exceed half of installed memory.
| Installed memory | Recommendation |
|---|---|
| 4 GB | 1 GB |
| 8 GB | 2.25 GB |
| 16 GB | 3 GB |
| 32 GB | 3 GB |
The help text in the launcher explains the ceiling: legacy versions gain nothing past about 3 GB, and too much memory causes longer garbage-collection pauses.
The game is started with -Xmx set to this value and -Xms set to 512 MB, or to the chosen value if that is lower.
Window size and fullscreen¶
| Setting | Default | Range |
|---|---|---|
| Window size | 1280 × 720 | Width 640 to 7680, height 480 to 4320, whole numbers |
| Start in fullscreen | Off | On or off |
The window size is the size Minecraft opens at. It is ignored in fullscreen, and the two number fields are disabled while fullscreen is on.
Java¶
Settings ▸ Java ▸ Java executable. Leave it empty and Xol downloads the exact Java runtime Mojang ships for each version (jre-legacy, Java 8, for 1.8.9 and 1.7.10). The main screen then reads "Managed by Xol".
On Apple Silicon, Mojang publishes no arm64 build of this old runtime, so Xol uses the x64 one through Rosetta 2, which is what Mojang's own launcher does. While the game runs, the dock names the runtime in use, for example "no arm64 build of this runtime; x64 runtime via Rosetta 2".
Using your own Java¶
Enter the full path to the java executable, or use Browse…. Clear returns to the managed runtime. A custom Java is checked when you press Play:
| Check | Message if it fails |
|---|---|
| The path must be absolute | "Java path: enter the full path to the java executable" |
| The program must run and report its version | "the selected Java could not be run: |
| Legacy versions need exactly Java 8 | "Minecraft 1.8.9 needs Java 8; the selected Java is 17" |
Extra JVM arguments¶
Settings ▸ Java ▸ Extra JVM arguments. Flags separated by spaces. Memory is set on the Game tab, not here.
| Rule | Limit |
|---|---|
| Each flag | Starts with -, contains no spaces, at most 512 characters |
| Number of flags | At most 32 |
| Quoting | None. No permitted flag needs it. |
Arguments that are refused¶
Anything that loads code into the JVM or redirects where it loads code from is refused with "JVM argument not permitted:
| Refused | Why |
|---|---|
-javaagent…, -agentlib…, -agentpath… |
Loads an agent into the game |
-Xbootclasspath… |
Replaces or extends the boot class path |
-cp, -classpath, -jar |
Redirects what is launched |
-Djava.library.path=…, -Djava.class.path=… |
Redirects native libraries or classes |
This is a guard against a "JVM arguments" box being used to inject code, for example by someone who talks you into pasting a flag. Ordinary tuning flags such as -XX:+UseG1GC are accepted.
What the launcher passes to the game¶
The game is started directly with an argument list, never through a shell. The player name, UUID, main class and server address are validated first. Your Minecraft access token is passed to the game process on your computer, the same way the official launcher does, and is scrubbed from the game log the launcher keeps.
Instance¶
The fourth fact on the main screen is the instance that will be used. See Instances.