对象加载与创建

安全发布对象的四种方法

  • 在静态初始化函数中初始化一个对象引用

  • 将对象的引用保存到volatile类型域或者AtomicReference对象中

  • 将对象的引用保存到某个正确的构造对象的final类型域中

  • 将对象的引用保存到一个由锁保护的域中

创建对象的步骤

  • 检测类是否被加载

    当虚拟机运行到new操作时,会到常量池中寻找该类的符号,若没有则需要调用类加载器加载类,加载后存入方法区–存放已加载的类信息

  • 分配内存

  • 初始化对象 执行构造方法

  • 设置实例指向刚分配的内存 –与上一步可重排序

不可变对象需要满足的条件

  • 对象创建以后其状态就不能改变
  • 对象所有域都是final类型
  • 对象是正确创建的(在对象创建之间this引用没有被逸出)
文章目录
  1. 1. 安全发布对象的四种方法
  2. 2. 创建对象的步骤
    1. 2.0.1. 检测类是否被加载
    2. 2.0.2. 分配内存
    3. 2.0.3. 初始化对象 执行构造方法
    4. 2.0.4. 设置实例指向刚分配的内存 –与上一步可重排序
  • 3. 不可变对象需要满足的条件
  • ,