类的加载机制
什么是类的加载?
类的加载:二进制Class文件
类的连接:验证(效验格式) 准备(为对象分配内存) 解析(符号引用变直接引用)
类的初始化:1. Client收集静态和成员属性并初始化 1. 优先初始化父类 2. 执行初始化语句
什么时候触发初始化
- 创建对象实例
- 调用类的静态方法
- 访问类的变量
- 反射强制创建实例时
- 子类被实例化时父类被初始化
- javca运行某个主类
类的加载机制都有什么?
- 全盘负责 这个类的Class以及引用的Class都由一个类加载器加载
- 父类委托 这个类的Class会优先委托父类视图加载,只有父类无法加载才会自己尝试加载
- 缓存机制 保证所有加载过的Class类被缓存,当需要使用Class对象,会先从缓存中寻找
类加载器都有什么?有什么区别
- Bootsrap class loader: 虚拟机内置加载器
- Platform class loader: 平台类加载器
- System class loader: 应用程序加载器
获取类加载器的方法
- static ClassLoder getSystemClassLoader(); 获取平台加载器
- ClassLoder getParent();返回父类加载器