大水怪

一只专注技术的水怪

0%

JDK21-25重要特性解读

Loom(虚拟线程)

Release JEP Description

| 24 | JEP 491: Synchronize Virtual Threads without Pinning | 解决了虚拟线程在 synchronized上绑定的问题,虚拟线程从此可以大规模使用了(但类加载依然存在绑定问题,有极小概率死锁) |
| 25 | JEP 506: Scoped Values | 引入了一种全新的,基于显式作用域管理的值传递方式 |

JVM相关

Release JEP Description
25 JEP 519: Compact Object Headers 完成了Lilliput项目的第一阶段,将对象头从128位减小到了64位,下一阶段目标是减少到32位。据阿里之前的反馈,约节省7-8%的内存,具体效果和项目本身关系比较大。
25 JEP 521: Generational Shenandoah 分代ZGC正式生产可用了,但目前还没有specjbb与其他GC的对比数据
25 JEP 520: JFR Method Timing & Tracing 支持自定义方法维度的全量耗时tracing
23
24
JEP 474: ZGC: Generational Mode by Default
JEP 490: ZGC: Remove the Non-Generational Mode
ZGC以后只有分代模式了,实测认为绝大部分情况下分代ZGC优于单代ZGC(少部分不符合分代假说的极端情况除外,例如sofa jraft的ringbuffer)

语法&core-lib

Release JEP Description
24 JEP 485: Stream Gatherers 提供了更灵活的stream流处理方式,并且提供了一些内置拓展
【inside.java】javaone-stream-gatherers
22 JEP 456: Unnamed Variables & Patterns 可以使用下划线’_‘来命名未使用的变量
23 JEP 467: Markdown Documentation Comments 注释支持Markdown格式

底层库

Release JEP Description
22 JEP 454: Foreign Function & Memory API 提供标准的FFM API,用于调用其他语言的代码以及本地内存管理
24 JEP 484: Class-File API 提供用于解析、生成和转换 Java 类文件的标准 API

Leyden 相关

Release JEP Description
24 JEP 483: Ahead-of-Time Class Loading & Linking 存储类加载和链接的训练数据,但当前只支持jdk内置的class loader: System, Extension, & Boot loaders
25 JEP 515: Ahead-of-Time Method Profiling 存储方法的调用数据(方法执行次数等),以便JIT了解方法的执行情况,可以直接进行对应层级的编译优化