前言
Java 是面向对象的语言,所谓“万事万物皆对象”就是 Java 是基于对象来设计程
序的,没有对象程序就无法运行(8 大基本类型除外),那么对象是如何创建的?
在内存中又是怎么分配的呢?
正文
一、对象的创建方式
在 Java 中我们有几种方式可以创建一个新的对象呢?总共有以下几种方式:
� new 关键字
� 反射
� clone
� 反序列化
� Unsafe.allocateInstance
为了便于说明和理解,下文仅针对 new 出来的对象进行讨论。
二、对象的创建过程
Java 中对象的创建过程就包含上图中的 5 个步骤,首先需要验证待创建对象的
类是否已经被 JVM 记载,如果没有则会先进行类的加载,如果已经加载则会在
堆中(不完全是堆,后文会讲到)分配内存;分配完内存后则是对对象的成员变
量设置初始值(0 或 null),这样对象在堆中就创建好了。但是,这个对象是属
于哪个类的还不知道,因为类信息存在于方法区,所以还需要设置对象的头部
(当然头部中也不仅仅只有类型指针信息,稍后也会详细讲到),这样堆中才创