作者回复: 赞总结!
作者回复: 在某些体系架构上,不对齐的话内存读写会报错。
在X86_64上,一个是为了让字段也能对齐,这样就不会出现字段横跨两个缓存行的情况,另一个原因更像个副作用,就是对象地址最后三位一直是0,JVM利用这个特性来实现压缩指针,也可以用这三位来记录一些额外信息
作者回复: 标记字段没有被压缩。
作者回复: 不是很理解你的问题。
对象间需要内存对齐至8字节。64位和32位对应8字节和4字节。
作者回复: String literal指向的对象存放在JVM的String pool里。
作者回复: 以8字节为单位,跟ObjectAlignmentInBytes有关