jol-core
包来打印对象// 打印jvm的详细信息
System.out.println(VM.current().details());
# Running 64-bit HotSpot VM. // 64位hotSpot虚拟机
# Using compressed oop with 3-bit shift. // 对象压缩 3位无符号右移
# Using compressed klass with 3-bit shift. // 类型指针压缩 3为无符号右移
# Objects are 8 bytes aligned. // 对象按8字节对齐
对象按8字节对齐,且jvm的引用占4个字节,能表示2^32=4G * 8 = 32G的物理内存。
采用8字节(64位)存储真实内存地址,比之前采用4字节(32位)压缩存储地址带来的问题:
对象大小 = 对象头字节 + 实例数据字节 + 填充字节