四:类加载机制,双亲委派模型

1. 类的加载机制

在这里插入图片描述

加载:找到类的位置, 将java 文件或字节流转换成虚拟机可以处理的内存中确实存在的对象
验证:检查每个java 文件对应class 文件符合不符合虚拟机的要求
准备: 给static 修饰的变量分配内存并且设置初始值
解析:将常量池的引用替换成实际值的过程
初始化:类加载最后一步。执行java 代码, 将static 修饰的代码块执行一遍
使用: 就是new 出的实例。此时才会使用构造方法
卸载:就是垃圾回收将new 出来的实例从虚拟机中移除

自己定义的类加载器, 对class 文件的加密解密等
系统类加载器
在这里插入图片描述

双亲委派模型
在这里插入图片描述
好处: 保证类有个合适的优先级。 object 是所有类的根类, 不管是哪个类加载器加载这个类都是通过双亲委派模型交给父类加载器(启动类加载器)去加载。 这样可以确保object 这个类在各个类加载器环境中都是同一个类

类本身+类加载器 共同决定这个类是否唯一, 如果同一个类由不同的类加载器加载, 也是2 个不同的类

如果不采用双亲委派模型去加载类, 每个类加载器都各自去加载object 类的话, 在使用时不知道应该继承那个类。底层最基础行为都无法保证, 应用程序也无法正常运行下去

猜你喜欢

转载自blog.csdn.net/qq_41572697/article/details/89916002