大纲
- class文件如何load到内存
- 类加载器
- 双亲委派
- 缓存&找不到返回null
- 多次加载class还是同一个
- Tomcat打破双亲委派
- 自己加载自己的class,不委托上级的类加载器 - 加载web应用
- SPI打破双亲委派
- 上级加载器委托下级的类加载器去加载class - jdbc
- 缓存&找不到返回null
- 实现自己的类加载器
- 重写findClass方法 可以加载指定路径的class文件
- 加密class
- 重写loadClass方法 可以打破双亲委派机制
- 热部署
- 不去委托父类加载,每次自己再加载一次
- 热部署
- 重写findClass方法 可以加载指定路径的class文件
- 创建一个class对象放在堆空间
- 配合反射使用
- 动态创建类或者修改属性
- 何时发生类加载
- 未规定
- linking
- verification
- preparation
- resolution - 将符号引用解析成直接引用
- 在class编译时期并不能知道引用的对象在内存中的地址,所以只能暂时用特定的符号表示
- initializing
- 一个面试题理解static加载有顺序