ClassLoader描述
只有Class被JVM加载到内存时,其他Class才能引用,.class文件是怎么被加载到JVM中的就是通过ClassLoader,JVM是按需动态加载,采用双亲委派机制。
JVM什么时候加载.class文件
当执行new操作时候
当执行Class.forName
当执行ClassLoader.loadClass
在Java程序中通过getClassLoader()可以打印类加载器
例如:
public static void main(String args[]) {
System.out.println(String.class.getClassLoader());
}
AppClassLoader
加载器范围:java.class.path
ExtensionClassLoader
加载器范围:java.ext.dirs
BootstrapClassLoader
加载器范围:sun.boot.class.path
自定义加载器
定义自已的类加载器分为两步:
- 继承ClassLoader
- 重写父类的findClass方法