文章预览
作者 | Ben Evans
译者 | 刘雅梦
策划 | 丁晓昀 JEP450(Compact Object Headers,紧凑对象头)已经成为 JDK 24 的交付目标,并且已合并到了主版本中。 这个目前处于实验阶段的特性通过缩小 HotSpot 中强制对象头的大小来优化堆利用率。这应该会减少整体堆的大小,提高部署密度,并增加数据局部性。
当前的实现情况概述
HotSpot 将所有对象存储在 Java 堆中,Java 堆是进程的“C 堆”的连续区域。在 Java 中始终是通过引用来处理对象,例如: 引用对象的局部变量包含从 Java 方法的堆栈帧到 Java 堆的指针。 引用类型的对象字段从一个 Java 堆位置指向另一个位置。 Java 引用的目标地址始终是对象头的开始处(这在当前版本的 HotSpot 中是强制性的)。 每个对象上都有标头(数组还有一个额外的 32 位标头来存储数组的长度)。标记字是前 64 位,用于特定于
………………………………