Java类加载以及双亲委派机制

刚刚接触到这两个概念,这里就简单的阐述一下。

类加载器作用就是用一个类的全限定名获得他的二进制字节流,这个动作实在jvm外部实现的,实现该功能的代码模块就是类加载器。
举个简单的例子:比如我们要用电脑光驱看一个光碟的内容,光碟就是我们的类,光驱就是类加载器,我们想要看光碟的内容就需要用光驱来加载光碟,通过光驱的解析,我们才能看到里面的内容。

类加载分为5的步骤:加载->验证->准备->解析->初始化

加载阶段:
1、用全限定名获取类的二进制字节流
2、将字节流的静态存储结构转变为方法区的运行时数据结构
3、在内存中生成一个java.lang.class对象,作为该类的外部访问接口

验证阶段:
1、文件验证:主要目的是保证输入的字节流能正确的被解析并且存储在方法区内
2、元数据验证:保证字节流描述的信息都符合Java规范(语义验证)
3、字节码验证:保证任意时刻对于操作数的数据类型都能匹配
4、符号引用验证:确认能找到对应类以及内部方法变量等

准备阶段:
为类变量分配内存以及初始化类变量

解析阶段:
将常量池中的符号引用替换为直接引用

初始化阶段:
将代码中指定的值去初始化变量或其他资源

类加载器分为:启动类加载器、扩展类加载器、应用程序类加载器
他们成树形结构。
在这里插入图片描述

双亲委派机制:简单来说就是当一个类发起加载请求时,他的加载器不会立即自己去尝试加载他,而是给他的上级先去尝试加载(每一层都这样),如果他的上级回应加载不了,那他才自己尝试加载。如果他的上机加载器是null,那就用启动类加载器进行尝试加载。
双亲委派机制保证了基础类的正常正确加载以及高效的运行,解决了基础类的统一性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值