JDK 25中String类的性能提升:哈希码常量折叠

2025-05-02

JDK 25对String类的hashCode函数进行了优化,实现了哈希码的常量折叠。这意味着对于静态不可变的Map,使用String作为键时,性能将显著提升,尤其是在使用String作为键访问不可变Map中的MethodHandle时,性能提升可达8倍以上。该优化通过在内部字段String.hash上添加@Stable注解实现,允许虚拟机在哈希码非零的情况下直接使用缓存的哈希码,从而避免重复计算。虽然零哈希码的情况会影响优化效果,但未来版本有望解决此问题。

阅读更多
开发 JDK 25

JVM启动过程深度解析

2025-01-09

Oracle Java团队成员Billy Korando于2025年1月9日发表了一篇深入探讨JVM启动过程的文章。文章详细分析了JVM启动的内部机制,为Java开发者提供了更深入的理解。文章建议读者查看视频描述以获取更多信息。

阅读更多
开发 启动过程

Java的史诗级重构:Valhalla项目最新进展

2024-12-17

历时十年的Java Valhalla项目正进入收尾阶段。该项目旨在修复Java类型系统中类和原始类型之间的裂痕。通过引入“像类一样编码,像int一样工作”的值类,Valhalla实现了扁平且紧凑的内存布局。Devoxx 2024上,Java语言架构师Brian Goetz介绍了该项目的最新进展,包括值类、空限制类型、增强的确定赋值分析和严格初始化等关键特性。

阅读更多
开发 值类

Mark–Scavenge:垃圾自行清理的等待 – Inside.java

2024-11-24

本文介绍了一种名为Mark-Scavenge的垃圾回收算法。该算法发现,在移动式垃圾回收器中,使用可达性作为活跃度的代理会导致不必要的数据移动。文章指出,传统的垃圾回收算法通常将可达性等同于活跃度,但这会导致已不再使用的对象被移动,造成浪费。Mark-Scavenge算法通过延迟对象迁移到下一个垃圾回收周期,增加了对象在此期间变为不可达的可能性,从而减少了不必要的移动。实验结果表明,Mark-Scavenge算法能够显著减少无效工作,并在高负载机器上带来明显的性能提升。

阅读更多
未分类 Mark-Scavenge ZGC