类加载子系统
2021-03-19 00:40:56 4 举报
类加载子系统
作者其他创作
大纲/内容
用户自定义的类加载器
加载jre/lib/ext目录下的类库
appClass Loader
判断是否同一个类标准:1. 包名一致2. 类加载对象一致
通过二进制流将类加载到方法区中,生成一个Class对象用于后续访问
保证字节码文件的正确性
将常量池内的符号引用转变为直接引用。一般在初始化之后执行。主要针对接口、字段、类方法、接口方法、方法类型等。
用户自定义加载类
extendClass Loader
为类变量分配内存,并设置初始默认值。类变量分配到方法区中
双亲委派机制
好处:1. 防止类被重复加载2. 防止安全隐患的问题
加载java、sun开头的类
javac使用clinit方法,为类变量进行赋值和执行静态方法块的代码。执行顺序与代码的顺序有关
准备
加载
连接
为什么需要自定义类加载器:1. 隔离加载类。框架之间会起冲突,需要自定义类加载,避免冲突。2. 修改类加载的方式3. 扩展加载源防止源码泄露
ext Classloader
验证
bootstrap Classloader
解析
初始化
bootstrapClassLoader
app ClassLoader
类的引用:jvm必须知道一个类型是由启动类加载器加载的还是用户类加载器加载的。如果由用户类加载器加载,类型的信息会包括这个类加载器的引用。
类加载过程
收藏
0 条评论
下一页