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了解方法的执行情况,可以直接进行对应层级的编译优化 |