对象创建过程
1、申请内存 2、成员变量赋默认值 3、调用构造方法((1)按照成员变量顺序调用,(2)初始化成员变量,(3)构造方法调用)
双重检查单例,单例要不要加volatile?
对象在内存中的存储布局?
实际和虚拟机的实现有关 假设是hot spot虚拟机 对象头:mark word 类型指针:.class 类实例的成员变量: 补齐:使得总大小为8的倍数
对象头中具体包括什么?
1、对象的hashcode; 2、锁的信息;(2位 四种组合代表锁的四种状态) 3、GC信息(年龄)
对象怎么定位?
1、句柄池(指针池)间接指针 节省内存 2、直接指针 访问速度快 引用——找
对象怎么分配?
堆里; 刚new出来优先往年轻代分配,GC好多次没有回收放到老年代;
优先栈上分配 如果不能在栈上,看对象是不是很大 大的直接老年代 小的尝试线程本地分配 不行的话确认不是分配在old上 分配到年轻代 老不死–老年代