Technology4 min read
Java 27 is out on 15 September: three runtime changes production will notice
Java 27 shipped on 15 September 2026 and is not an LTS release: Java 25 remains the main production version and Java 29 will be the next LTS. Even so, three runtime changes in OpenJDK 27 affect the memory and CPU of real applications, so they are worth knowing before upgrading.

JEP 534: compact object headers by default
The object header on a 64-bit JVM shrinks from 96–128 to 64 bits. For applications with millions of small objects that saves 10–20 % of heap, but the exact figure depends on the object graph: some services gain noticeably, others almost nothing. The change is on by default, so it shows up immediately.

The rule 'non-LTS only on staging' saves as many nerves as 'never update the CMS in production without a copy'. Java 27 belongs on a test environment for load measurements, not for the sake of a 'latest version' badge.
JEP 523: G1 everywhere
The G1 garbage collector is now the default in every environment. Previously small containers with one CPU and little memory got Serial GC. For such services CPU consumption and the pause profile change: G1 runs in parallel and pauses more predictably but needs more background resources.
JEP 536: secrets hidden in JFR
Java Flight Recorder automatically filters values under keys such as password, token, secret, credential, api-key, private-key and client-secret. It is an extra protective layer for profiler recordings, not a replacement for secret stores and access management.
Removed flags and diagnostics
Check startup scripts: several options are gone for good or renamed.
- Removed: -noclassgc, -noverify, -verifyremote, -Xverify:none.
- Renamed: -XX:InitiatingHeapOccupancyPercent to -XX:G1IHOP; -XX:UseCompressedClassPointers is deprecated.
- The new jcmd <pid> VM.security_properties command shows TLS configuration.
- The JSON thread dump gains formatVersion 2 and numeric values instead of strings, for example "tid": 42.
What to do before upgrading
Run load tests and compare memory use and CPU profile before and after, especially for resource-limited containers. Make sure startup scripts do not use removed flags and dump parsers understand the new JSON format. If production runs on the LTS line, Java 27 stays a staging version for early acquaintance with changes that will arrive in Java 29.
Summary
Java 27 is not LTS, but its runtime changes are real: thinner headers, G1 by default, secret masking in JFR. Test, update scripts and keep production on Java 25 until Java 29.
Sources
Follow the journal
New pieces on websites, SEO and AI come out in the QIO journal. Follow in Google, by RSS or in Telegram to get them first.


