Java类加载机制 双亲委托模式

类加载时序图

加载阶段

类加载阶段是由类加载器负责根据一个类的全名类读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区内,然后将其转换为一个与目标类型对应的java.lang.Class
对象实例,这个Class对象在日后就会作为方法区中的该类的各种数据的访问入口。

JVM支持两种类型的类加载器,分别为引导类加载器(BootStrap ClassLoader) 和自定义类加载器(User-Defined Classloader)我们常用的包括 、Extension ClassLoader、
Application ClassLoader这三个类加载器。

BootStrap ClassLoader

BootStrap ClassLoader也称之为启动类加载器,由C++语言编写,并嵌套在JVM内部,主要负责加载JAVA_HOME/lib目录中的所有类型。

Extension ClassLoader

ExtClassLoader派生于ClassLoader,采用Java语言编写,负责加载ext文件夹(jre\lib\ext)内的类

Application ClassLoader

AppClassLoader派生于ClassLoader,采用Java语言编写,负责加载应用程序级别的类路径,提供的环境变量路径等

双亲委托模式

一种被JVM设计者制定的类加载器的加载机制。按照双亲委托模式的规则,除了启动类加载器之外,程序中每一个类加载器都应该拥有一个超类加载器,比如Application ClassLoader
的超类加载器就是Extension ClassLoader,开发人员自定义的加载器的超类就是Application ClassLoader,当一个类加载器收到一个加载任务时,并不会立即展开加载
,而是将加载任务委派给它的超类加载器去执行,每一层的加载器都采用这种方式,直到委派给顶层的启动类加载器为止,如果超类无法加载该类,则会将类的加载内容退回给它的下一层
加载器去加载。双亲委托模式的优点就是:能有有效的确保一个类的全局唯一性。

双亲委托模式

注意:Java虚拟机并没有明确要求类加载器的加载机制一定要使用双亲委托模式,只是建议这样做,而在Tomcat中,当默认的类加载器接收到一个加载任务时,首先会由
它自动加载,当加载失败,才会将类委派给它的超类加载器去执行,这是Servlet规范推荐的一种做法。

连接阶段

连接阶段由验证、准备、解析3个阶段构成。

验证

验证主要任务就是验证类信息是否符合JVM规范,是否是一个有效的字节码文件,而验证的内容涵盖了类数据信息的格式验证、语义分析、操作验证等

准备

准备阶段主要任务就是为类中所有静态变量分配内存空间,并为其设置一个初始值(由于对象还没有产生,因此实例变量将不在此操作范围内)

解析

解析阶段主要任务就是将常量池中所有的符号引用全部转换为直接引用,由于Java虚拟机规范中并没有明确要求解析阶段一定要按照顺序执行,因此解析阶段可以等到初始化
以后再执行。

初始化阶段

初始化阶段中,JVM会将一个类中所有被static关键字标识的的代码统统执行一遍,如果执行的是静态变量,那么就会使用用户指定的值覆盖掉之前的准备阶段中JVM为其设置的初始值,
如果执行的是static代码块 JVM就将会执行static代码中的所有操作。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容