今天看啥  ›  专栏  ›  InfoQ

Java 24减少对象头的大小并节省内存

InfoQ  · 公众号  · 科技媒体  · 2024-11-23 10:15

文章预览

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

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览