Launch options¶
The main screen shows 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, with a mark under the track at the recommended value. Use recommended returns to it. The main screen adds "(recommended)" while you have not set your own value.
| 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¶
Both Xol profiles run Java 8 with Forge. For them:
- Take a quarter of installed memory.
- Keep it between 1.5 GB, the least these versions run in, and 8 GB, past which the game gains nothing.
- Round down to a multiple of 256 MB.
- Never exceed half of installed memory.
| Installed memory | Recommendation |
|---|---|
| 4 GB | 1.5 GB |
| 8 GB | 2 GB |
| 16 GB | 4 GB |
| 32 GB or more | 8 GB |
The help text under the slider names your computer's numbers and which limit decided them. On a machine with memory to spare, it says that more memory does not make Minecraft faster or smoother, and that setting more does no harm. On a small machine, it says the game gets a quarter of your memory, because Java needs about as much again outside it and the rest has to stay free for your system.
When you press Play, Xol works the number out again for the profile about to start. A large set of your own mods can raise it. Settings ▸ Java lists that change with its reason. See Automatic Java arguments.
The game is started with -Xmx set to this value. -Xms is 512 MB, or the chosen value if that is lower, unless an automatic Java argument sets it.
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 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".
While the game runs, the dock names the runtime in use after the start time.
Java runtime for 1.7 / 1.8 (Apple Silicon Macs only)¶
Mojang publishes no Apple Silicon (arm64) build of this old runtime. On an Apple Silicon Mac, this tab therefore has one more field, Java runtime for 1.7 / 1.8. It is not shown on any other machine.
| Choice | What starts the game |
|---|---|
| Automatic (recommended), the default | A native Apple Silicon Java 8 (Azul Zulu 8) with Apple Silicon game libraries. If that fails, the game is started again on the Intel runtime, and that instance keeps using it until you run Repair. |
| Apple Silicon (arm64) | The native runtime, also for an instance that fell back before |
| Intel (Rosetta 2) | Mojang's x64 Java 8 through Rosetta 2 |
The native Java and its game libraries are not part of Xol. They are downloaded from their publishers the first time they are needed, from cdn.azul.com, libraries.minecraft.net and one fixed address on github.com, and each file is checked against a checksum fixed inside the launcher before it is used.
On a build machine without a graphics card the native runtime started the game 3.4 to 4.2 times faster. No frame-rate gain has been shown. The details, the fallback and a way to measure both runtimes yourself are on Apple Silicon.
A custom Java executable, below, overrides this field. For 1.7 and 1.8 it has to be an Intel (x64) Java, because the game libraries that go with it are Intel ones.
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", with your version numbers |
Automatic Java arguments¶
Settings ▸ Java ▸ Automatic Java arguments has one switch, Work out what this instance needs, which is on by default. Xol reads the mods in the instance and the facts about your computer, and adds only the Java arguments they are known to need. Below the switch, each argument it added is listed on its own line with the reason. With the switch off, the list shows what would be added.
- Your own arguments always win. Xol never removes, overrides or changes an argument you typed. When a rule wants something gone, it becomes a warning instead.
- Xol can only add flags from a fixed list, change the memory bounds, set an environment variable from a second fixed list, ask for a different Java runtime, or warn. It cannot name a file, a class, a class path or an agent.
- Jars are read as data. Nothing in them is run.
- The same arguments, with their reasons, are in the support log.
An example: on a computer with at least 8 GB of memory and a heap of at least 2 GB, Xol starts Java 8 with the G1 garbage collector and a pause target of 50 ms, and starts the heap at half its maximum. The reason shown is "this keeps the pauses while Java clears memory short and even instead of rare and long".
After a crash, the crash panel can offer one change as a button, for example more memory. Nothing is changed until you press it, and the game does not start by itself afterwards.
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.
The frame counter¶
-Dxol.bench.seconds=<n> makes the Xol client count frames for n seconds (1 to 3600) and write the average, the 1% low and the cost of Xol's own HUD to the game log, once every ten seconds and once at the end. It works in both profiles. Without the argument nothing is set up and nothing extra runs. See Compare the two yourself.
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 Instance line on the main screen names the instance that will be used. See Instances.
Also in the Launch options card¶
- Open folder, a menu of the selected instance's folders. See Instances.
- Played, when you last played this instance and for how long in total.