java类加载过程
- 装载 把class字节码加载到内存中。
- 连接 验证、准备、解析
- 初始化 类的静态变量、静态代码库进行初始化
类加载器
java中三个默认类加载器java
- Bootstrap ClassLoader 根加载器,加载JAVA_HOME/jre/lib下的rt.jar等核心jar
- Extension ClassLoader 扩展加载器,加载JAVA_HOME/jre/lib/ext下面的扩展jar
- App CLassLoader 加载classpath下的jar
类装载过程
ClassLoader#loadClass(String name, resolve); 1.加锁 2.是否已经被装载 3.没有被装载则寻找父类进行装载,这里是个递归 4。根据入参决定是否进行连接。安全
双亲委派
以前类装载的时候先找父加载器进行加载,依次递归,这种的行为叫作双亲委派。好处是安全,系统类优先被上层加载器加载。spa
类加载方式
- 隐式加载 new Object()
- 显示加载 Class.forName(String name)