内存布局

面试题 User user = new User()在内存中占几个字节?
public class User{private String name;private int id;public void main(){User user = new User();}}
| size(byte) | |||
|---|---|---|---|
| MarkWord | - 对象Hash值 - gc年龄 - 锁信息 |
8 | |
| classPointer | 4或者8 | 指向永久代 ?.class 类信息 使用-XX:+UseCompressClassPointer指令后,压缩为4字节 |
|
| Instance data | int id String name |
对象数据 int4 String在开启压缩是引用占4个字段 |
|
| padding | 对齐,不能被8整除时,加空字节。 |
在开启指针压缩时:8+4+4+4=20+4=24
在没开启指针压缩时:8+8+4+8=28+4=32
