Skip to content

Enable compact object headers on Java 24+ - #4211

Merged
itzg merged 1 commit into
itzg:masterfrom
OowhitecatoO:flags/compact-object-headers
Aug 3, 2026
Merged

Enable compact object headers on Java 24+#4211
itzg merged 1 commit into
itzg:masterfrom
OowhitecatoO:flags/compact-object-headers

Conversation

@OowhitecatoO

Copy link
Copy Markdown
Contributor

This is the small follow-up I mentioned in #4205. Upstream MeowIce has added -XX:+UseCompactObjectHeaders since the flag set was copied into the image, and of everything that changed it is the one worth picking up on its own.

It is gated on Java 24 or newer because the option does not exist before that, and an unrecognised -XX: option is fatal — emitting it unconditionally would stop USE_MEOWICE_FLAGS from starting on the java17 and java21 images. Upstream now says its flags target Java 25+, but the image applies MeowIce's set from 17 upwards, so the gate has to live here.

The other differences from upstream are less clear-cut, so I have left the rest of the set alone.

Details, if useful

What it does: JEP 450 folds the class pointer into the mark word, so an object header is 8 bytes instead of 12 plus padding. Allocating 5,000,000 new Object() into a reachable array in a 2G heap:

heap used after a full GC
-XX:-UseCompactObjectHeaders 99 MB
-XX:+UseCompactObjectHeaders 61 MB

The 5M-element Object[] accounts for about 19 MiB of that on both sides, so the objects themselves go from roughly 16 bytes to 8.

Version compatibility:

Java flag
17, 21 does not exist — fatal
24 {experimental}, default false
25 {product}, default false

On 24 it has to be preceded by -XX:+UnlockExperimentalVMOptions, which the block already emits well before this point.

Verified by generating the flag set with USE_MEOWICE_FLAGS and starting a JVM with it on each version:

image UseCompactObjectHeaders emitted java -version
eclipse-temurin:17-jre no rc=0
eclipse-temurin:21-jre-noble no rc=0
eclipse-temurin:24-jre yes rc=0
eclipse-temurin:25-jre-noble yes rc=0

@itzg itzg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@itzg
itzg merged commit 8651291 into itzg:master Aug 3, 2026
7 checks passed
gabrielcosi pushed a commit to gabrielcosi/home-ops that referenced this pull request Aug 4, 2026
… ➔ 2026.8.0) (#267)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/itzg/minecraft-server](https://github.com/itzg/docker-minecraft-server) | minor | `2026.7.2-java25` → `2026.8.0-java25` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/2) for more information.

---

### Release Notes

<details>
<summary>itzg/docker-minecraft-server (ghcr.io/itzg/minecraft-server)</summary>

### [`v2026.8.0`](https://github.com/itzg/docker-minecraft-server/releases/tag/2026.8.0)

[Compare Source](itzg/docker-minecraft-server@2026.7.2...2026.8.0)

<!-- Release notes generated using configuration in .github/release.yml at 1e2d375dba72a0730365c29dd5f1990f9764da5a -->

##### What's Changed

##### Enhancements

- Implement GTNH daily build support by [@&#8203;SgtMate](https://github.com/SgtMate) in [#&#8203;4190](itzg/docker-minecraft-server#4190)

##### Bug Fixes

- Update dependency itzg/mc-image-helper to v1.63.1 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4189](itzg/docker-minecraft-server#4189)
- Move knockd config out of /tmp by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4193](itzg/docker-minecraft-server#4193)
- Use Metalcape knockd by default for java25 by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4194](itzg/docker-minecraft-server#4194)
- Fix NanoLimbo port not applying to an existing settings.yml by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4201](itzg/docker-minecraft-server#4201)
- Ensure debugging starts after loading CF\_API\_KEY\_FILE by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4208](itzg/docker-minecraft-server#4208)

##### Documentation

- build(deps): bump the patches group in /docs with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4187](itzg/docker-minecraft-server#4187)
- Add daily build options to gtnh example by [@&#8203;SgtMate](https://github.com/SgtMate) in [#&#8203;4191](itzg/docker-minecraft-server#4191)
- docs: add seedloaf sponsor by [@&#8203;jasperchess](https://github.com/jasperchess) in [#&#8203;4197](itzg/docker-minecraft-server#4197)
- Enhance SECURITY.md with automated scan information by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4212](itzg/docker-minecraft-server#4212)

##### Other Changes

- Update dependency itzg/mc-image-helper to v1.63.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4184](itzg/docker-minecraft-server#4184)
- build(deps): bump actions/stale from 10 to 11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4196](itzg/docker-minecraft-server#4196)
- build(deps): bump docker/login-action from 4.4.0 to 4.5.2 in the updates group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4195](itzg/docker-minecraft-server#4195)
- Update dependency itzg/mc-image-helper to v1.63.2 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4198](itzg/docker-minecraft-server#4198)
- Fix build workflow conditionals that always evaluated true by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4203](itzg/docker-minecraft-server#4203)
- Update dependency itzg/mc-image-helper to v1.64.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4202](itzg/docker-minecraft-server#4202)
- Fix GraalVM flag selection when USE\_MEOWICE\_FLAGS is not set by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4204](itzg/docker-minecraft-server#4204)
- Add SECURITY.md for security policy and reporting by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4207](itzg/docker-minecraft-server#4207)
- Restore the GraalVM image variants by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4205](itzg/docker-minecraft-server#4205)
- Update dependency itzg/mc-monitor to v0.17.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4209](itzg/docker-minecraft-server#4209)
- Enable compact object headers on Java 24+ by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4211](itzg/docker-minecraft-server#4211)
- Update dependency itzg/mc-image-helper to v1.64.1 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4213](itzg/docker-minecraft-server#4213)

##### New Contributors

- [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) made their first contribution in [#&#8203;4201](itzg/docker-minecraft-server#4201)

**Full Changelog**: <itzg/docker-minecraft-server@2026.7.2...2026.8.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Berlin)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41LjMiLCJ1cGRhdGVkSW5WZXIiOiI0NC41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.xcd.dev/gabrielcosi/home-ops/pulls/267
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants