创建对象的方式
- new
- Class.newInstance
- clone
- 反序列化
- 第三方库
创建对象的步骤
- 判断对象对应类是否加载、链接、初始化
- 为对象分配内存
- 内存规整:指针碰撞
- 内存不规整:需要维护空闲列表
- 处理并发安全问题
- 采用CAS保证更新的原子性
- 每个线程预先分配一块TLAB
- 初始化分配到的空间
- 设置对象头
- 执行init方法初始化
代码示例
public class Account {
}
class Consumer {
int id = 10010;
String name;
Account account;
{
name = "ConsumerName";
}
public void createAccount() {
account = new Account();
}
}
public class ConsumerTest {
public static void main(String[] args) {
Consumer consumer = new Consumer();
}
}