java类加载过程
- 装载 把class字节码加载到内存中。
- 链接 验证、准备、解析
- 初始化 类的静态变量、静态代码库进行初始化
类加载器
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。根据入参决定是否进行链接。
双亲委派
之前类装载的时候先找父加载器进行加载,依次递归,这种的行为叫做双亲委派。好处是安全,系统类优先被上层加载器加载。
类加载方式
- 隐式加载new Object()
- 显示加载Class.forName(String name)