过程:
- 加载
二进制文件加载到内存 - 验证
验证类文件是否正确,是否符合jvm规范 - 准备
静态变量进行初始化,分配内存空间并赋予初始值 - 解析
符号引用转为直接引用,加载引用的类 - 初始化
对类进行初始化,对静态变量进行赋值,执行静态代码块 - 使用
- 卸载
确定一个唯一的类:
- 类全限定名
- 类加载器
为什么要自定义?
- 从非标准位置加载类。如数据库、网络上。
- 加密。对class文件进行加密存储,需要解密后加载到内存。
- 隔离。利用不同classLoader加载。例如tomcat
- 动态加载类。热部署。
双亲委派优点?
- 安全机制。防止核心类库被篡改。
- 防止类重复加载。
打破双亲委派?
tomcat打破双亲委派。目的隔离war包。
网友评论