在 jdk 25 之前,如果 row 对象本身的字段占20字节,加上对象头12字节,所以 row 对象总共占32字节;如果 row 对象本身的字段占16字节,加上对象头12字节虽然是28字节,但因为 jvm 要按8字节对齐,所以还是占32字节,也就是说哪怕对 row 对象优化后减少了4字节,但因为字节对齐的关系,这个优化相当于白做了。

但是从 jdk 25开始,对象头从12字节变成8字节了,若 row 对象本身的字段占16字节,那么它实际占用的内存是24字节,相比 jdk 25 之前的32字节少了8字节。可以在 jdk 25 中通过 -XX:+UseCompactObjectHeaders 参数用 jctools 这个工具来验证。

Reply to this note

Please Login to reply.

Discussion

No replies yet.