压缩指针:64位系统下,Java虚拟机是如何“偷”回4字节内存的?

thbcm阅读(214)

对象头

对象头由两个字(计算机术语,表示计算机处理数据的最小单位)组成。如果对象是一个Java数组,对象头中还必须包含一部分用于记录数组长度的数据,因为虽然Java虚拟机可以通过Java对象的元数据信息确定Java对象的大小,但无法从数组的元数据中确定数组的大小。

对象头的两个字分别是Mark Word和Klass Pointer。

1)Mark Word:即标记字段,用于存储对象自身的运行时数据,如哈希码(HashCode)、垃圾回收分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。

2)Klass Pointer:即类型指针,是对象指向它的类元数据的指针,Java虚拟机通过这个指针来确定这个对象是哪个Java类的实例。

实例数据

实例数据部分存储对象的属性字段信息。如果对象没有属性字段,那么这部分就不会有数据。字段类型的不同会占用不同的字节,例如,boolean类型占1个字节,int类型占4个字节等。

C#/.NET/.NET Core技术前沿周刊 | 第 59 期(2025年10.20-10.26)

thbcm阅读(306)

C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。

2025 年必须尝试的 5 个 Laravel 新特性

thbcm阅读(204)

你大概已经习惯用
DB::transaction() 来保证数据一致性,对吧?Laravel 现在在事务工具箱里塞进了一个新帮手 ——
afterRollback()。它会在事务失败时自动触发,让你不需要额外写 try-catch 就能处理清理、记录日志或发送通知等动作。

独立开发AI产品的那些事

thbcm阅读(180)

七号楼私信「楼里」自动获取:《楼里App-安卓版》《AI知识库》、《独立开发者》

联系我们