您的位置:首页 > 编程语言 > Java开发

Java对象创建过程

2015-10-11 01:04 417 查看
Java中new()创建对象的时候有以下过程:

1. Java中,用new()创建一个对象的时候,Java虚拟机首先去检查new指令的参数是否能够在方法区的常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。如果没有,则必须执行相应的类加载过程。

2. 类加载过程为:Java解释器查找类路径,以定位.class文件。然后载入.class,有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。

3. 在类加载检查通过后,虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定。为新生对象分配内存即为在Java堆中划分出一块确定大小的内存。

4. 内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值。如果使用TLAB(Thread Local Allocation Buffer, 本地线程分配缓冲),这一工作过程也可以提前到TLAB分配时进行。初始化为零值保证了对象的实例字段在Java代码中可以不赋初始值就可以直接使用,程序访问到这些字段的数据类型所对应的零值,引用被设置为null,基本数据类型被设置为0。

5. 接下来,虚拟机对对象进行必要的设置,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息,这些信息保存在对象的对象头中。

6. 执行所有出现在字段定义处的初始化操作。

7. 执行构造器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 对象