码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-11-02 20:20:33      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:初始化   final   ini   init   父类   内存地址   直接   技术分享   加载过程   

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


一、 类加载过程

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

技术分享图片

1、Load:

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

2、Link:

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

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

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

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

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

 

二、双亲委派模型

 

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

标签:初始化   final   ini   init   父类   内存地址   直接   技术分享   加载过程   

原文地址:https://www.cnblogs.com/java-zzl/p/9862452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!