内存布局
面试题 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