java 类加载过程

Class加载过程

class load 进内存 分三步 :

loading 加载

将class文件加载到内存

linking 连接

verification

校验加载进内存的class是否符合jvm规范

preparation

将class文件的静态变量赋默认值 如果 int = 0 long = ol String = null 之类的

resolution

将符号引用转换为直接引用

initializing 初始化

将class文件静态变量赋初始值 调用静态代码块

双亲委派原则

1 Bootstrap 顶级类加载器 lib/rt.jar

2 Extension 扩展类加载器 jre/lib/ext/*.jar

3 App classpath 类加载器 classpath

4 Custom 自定义类加载器

基于双亲委派原则的类加载过程 :

当需要加载一个类的时候 由低到高往上找 看有没有已经加载过的 如果有已经加载了的 直接拿来用

如果找到bootstrap类加载器 都没有加载过 就由高到底去尝试加载 如果可以加载 就直接加载并且返回 反之 继续往下尝试

其实双亲委派是写在loadClass方法中的 调用parent的loadClass()

原文地址:https://www.cnblogs.com/self-crossing/p/12658095.html