JVM总括四-类加载过程、双亲委派模型、对象实例化

JVM总括四-类加载过程、双亲委派模型、对象实例化


一、 类加载过程

一定要注意每个过程执行的内容!!!!!!

1、Load:

  将编译后的.class文件以二进制流的方式加载到JVM内存中,并转化为特定的数据结构,用到的就是classLoad二类加载器。这个过程中校验cafe babe魔法数常量池文件长度、是否有父类等。

2、Link:

  分为验证、准备、解析三步。

  验证:更为详细的验证,比如:final是否规范(二次赋值不规范)、static是否合理(静态方法必须引用静态变量)、类型是否正确。

  准备:静态变量分配内存并设定默认值(静态变量不赋值是有个默认值得),这个过程没有对象实例化。

  解析:把类中的符号引用转化为直接引用,完成内存结构布局。(符号引用转化为直接引用:例如:test1() { test2(); },这里test1调用test2方法就是符号引用,但实际test2()通过一个指针指向test2方法的内存地址,这个指针负责调用,它就是直接引用)。

3、Init:初始化推迟到实例对象执行,执行静态代码块,为静态变量赋予正确的初始值,递归初始化父类,执行构造器。(先执行静态代码块,再执行静态变量)。

 

二、双亲委派模型

猜你喜欢

转载自www.cnblogs.com/java-zzl/p/9862452.html