JDK 26 delivers a broad set of performance improvements across four areas. In JDK Libraries: the new LazyConstant API (formerly StableValue) enables at-most-once, thread-safe lazy initialization with JVM constant-folding optimizations; MemorySegment::getString reduces intermediate allocations for faster string extraction from off-heap memory; record hashCode() is now as fast as hand-written implementations; and cryptographic algorithms (AES, ML-DSA, P-256), GZIPInputStream, and reflection utilities receive targeted speedups. In Garbage Collectors: G1 gains a dual card-table design (JEP 522) that cuts write-barrier synchronization overhead, yielding 5–15% throughput gains in reference-heavy workloads. In Runtime: the AOT cache now supports all GCs including ZGC via a GC-agnostic streamable object format (JEP 516); the default initial heap size is reduced to MinHeapSize for faster startup; and virtual threads can now yield during class initialization, reducing carrier-thread starvation. In the Compiler: C2 JIT can now compile methods with very large parameter lists, and its loop-vectorization cost model is improved for better SIMD decisions.

10m read timeFrom inside.java
Post cover image
Table of contents
Enhancements in JDK LibrariesGarbage Collection ImprovementsCompiler ImprovementsRuntime ImprovementsClosing Thoughts
37.8K Impressions2 Comments