Java对象分代年龄的最大值

对象在内存中的布局:
对象在内存中主要分为3个部分:对象头,示例数据,对其填充。
  对象头:存放hashcode,对象分代年龄,锁标识,偏向锁Id,偏向时间,数组长度(数组对象独有)
  实例数据:对象的属性
  对其填充:由于虚拟机要求 对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐(可以理解为jvm对象寻址的最优解决方案)。
32位系统对象头结构

   64位系统对象头结构

从两种结构可以看出,分代年龄在对象头中大小占4bit,所以对象分代年龄最大是15;在jvm调优的时候,可以根据这个原理,适当调小对象的分代年龄,让长期存活的对象,尽快进入老年代,节约年轻代的空间

posted @ 2022-03-15 22:05  转身瞬间  阅读(386)  评论(0编辑  收藏  举报