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

Posted java-zzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM总括四-类加载过程双亲委派模型对象实例化相关的知识,希望对你有一定的参考价值。

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


一、 类加载过程

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

技术分享图片

1、Load:

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

2、Link:

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

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

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

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

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

 

二、双亲委派模型

 

以上是关于JVM总括四-类加载过程双亲委派模型对象实例化的主要内容,如果未能解决你的问题,请参考以下文章

JVM总括:目录

JAVA虚拟机系列三-类加载过程双亲委派模型对象实例化过程

JVM思考-init和clinit区别

JVM思考-ClassLoader.loadClasshe和Class.forName区别

JVM类加载器与双亲委派模型

JVM类加载器与双亲委派模型