JDK 27 正式发布:内存、安全、并发三路齐发
JDK 27 于 2026 年 9 月 15 日正式 GA。这是 JDK 25 之后又一个重量级版本,带来了 9 个 JEP,覆盖垃圾回收、安全加密、并发、向量计算等多个核心领域。
挑几个值得单独拿出来说的讲。
G1 全面上位:Serial GC 退出默认舞台
JEP 523:Make G1 the Default Garbage Collector in All Environments
之前 G1 只在 server 环境(即有 -server 标志的机器)默认启用,桌面或小型设备默认用的是 Serial GC。JDK 27 开始,所有环境统一默认 G1。
这意味着什么?过去在一台 4 核 8G 的小型服务器上,你可能需要手动加 -XX:+UseG1GC 才能用到 G1,现在不用了。
不过要注意:如果你的应用因为 GC 调优问题(比如 Full GC 频繁)依赖了 Serial GC 的特定行为,这次切换可能会触发变化。建议先在测试环境跑一轮 GC 日志观察。
对象头压缩:96 bit → 64 bit
JEP 534:Compact Object Headers by Default
这是本次最值得关注的生产级特性之一。
HotSpot JVM 的对象头原本是 96 bit(12 字节):Mark Word(64 bit) + Klass Pointer(32 bit)。JDK 24 引入了压缩对象头(JEP 450),JDK 27 将其设为默认。
压缩后对象头变成 64 bit(8 字节),效果:
- 堆内存占用下降约 5-10%(具体取决于对象大小和存活周期)
-
- CPU cache 命中率提升(对象布局更紧凑)
-
- 对容器化部署尤其友好
值得注意的是,旧版 96 bit 对象头并未移除,只是默认用新的。可以用-XX:-UseCompactObjectHeaders切回去。
- 对容器化部署尤其友好
后量子加密:TLS 1.3 引入抗量子密钥交换
JEP 527:Post-Quantum Hybrid Key Exchange for TLS 1.3
量子计算威胁已经不再只是理论问题。现有 RSA/ECC 密钥交换在未来的量子计算机面前将被"可接受的计算资源"攻破。
JEP 527 在 TLS 1.3 中引入了混合密钥交换:传统算法(ECDH)+ 量子抗性算法(X25519+Kyber768)的组合。TLS 握手会同时建立两条密钥通道,最终密钥两者混合生成。
好消息是:应用层代码不需要改动,javax.net.ssl API 自动生效。有 HTTPS 需求的企业级应用优先受益。
预览区:结构化并发与模式匹配
JEP 533(第七预览):Structured Concurrency 和 JEP 532(第五预览):Primitive Types in Patterns
结构化并发已经很成熟了,这次是第七个预览版,离正式不远。它解决的是:多个线程中的任务被当作一个单元来管理,错误处理和取消逻辑更简洁。
java
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
Future<String> user = scope.fork(() -> findUser());
Future<Integer> order = scope.fork(() -> fetchOrder());
scope.join();
process(user.resultNow(), order.resultNow());
}
```
模式匹配第五预览,意味着 API 层面已经基本稳定。
---
## 其他几个
- **JEP 531(第三预览):Lazy Constants** ------ 常量首次访问时才解析,减少启动时的 class loading 开销
- - **JEP 536:JFR In-Process Data Redaction** ------ 飞行记录仪(JFR)支持脱敏,适合在生产环境做性能分析而不泄露业务数据
- - **JEP 537(第十二孵化):Vector API** ------ 向量计算 API,继续孵化,性能已接近手写 SIMD 指令
- - **JEP 538(第三预览):PEM Encodings** ------ 加密对象的 PEM 编码/解码支持,适合与 TLS 证书交互
---
## 升级建议
JDK 27 的预览特性比较多(5 个),生产直接上要谨慎。建议:
1. **开发/测试环境**先跑一轮,重点观察 GC 行为变化
2. 2. 有**安全合规要求**的优先测试 TLS 1.3 混合密钥交换
3. 3. 关注**容器化部署**场景------对象头压缩收益明显
---
**参考**
- JDK 27 官方页面:https://openjdk.org/projects/jdk/27/
- - JEP 523 G1 默认:https://openjdk.org/jeps/523
- - JEP 534 对象头压缩:https://openjdk.org/jeps/534
- - JEP 527 后量子 TLS:https://openjdk.org/jeps/527
-