Skip to content

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:

  1. Take a share of installed memory: 30% on machines with 8 GB or less, 25% above that.
  2. Keep it between 1 GB and 3 GB.
  3. Round down to a multiple of 256 MB.
  4. 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.