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.
Table of contents
Enhancements in JDK LibrariesGarbage Collection ImprovementsCompiler ImprovementsRuntime ImprovementsClosing Thoughts37.8K Impressions2 Comments