类加载子系统

类加载子系统

1.概述

1.1 是什么?

JVM构成中的一部分

1.2. 用于做什么?

负责加载类、校验类、初始化类、构建类的字节码对象。

2. 类加载器

2.1 是什么?

类加载子系统中负责将类读取到内存的对象。

2.2 有哪些类加载器?

BootStrapClassLoader

ExtClassLoader

AppClassLoader

自定义的类加载器

2.3 类加载机制-双亲委派模型?

2.3.1 原理:

向上询问、向下委派

2.3.2 特点:

优点:

可以保证一个类只能被同一个类加载器加载一次,同时保证类体系的健壮性(例如我们自己写的java.lang.Object类不能被加载)

缺点:

1)可能对效率会多少有一些影响。

2)可能对不同项目中的包名、类名相同的类无法实现正确类加载。

3. 类的加载方式

3.1 显示加载

直接调用类加载器的方法对类加载即可

3.2 隐式加载

1)访问类的成员(静态属性或方法)

2)构建类的对象(new)

4. 类加载过程

4.1 查找类

不同类加载器有不同的类加载路径

4.2 读取类

底层会通过线程调用io将磁盘或网络中的类读到内存中

4.3 连接

4.3.1校验:

校验类结构信息的合法性

4.3.2准备:

对类变量进行默认初始化

4.3.3解析:

对一些符号引用转换为直接引用。例如访问常量池中的哪个常量,调用哪个类中的哪个方法?

4.4 初始化类

1)对类变量进行初始化赋值(例如static int a=10;准备阶段是0,初始化阶段为10)

2)执行类的静态代码块。

主动使用

被动使用:被动使用是不会初始化类的。

5.1 自定义类加载器

5.1.1 为什么?

默认的类加载器不满足我们需求了

5.1.2 如何自定义?

直接或间接的继承ClassLoader类并重写相关方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值