动态加载机制
运行时加载类文件(.class)到内存中
要依靠classloader加载
classloader有3个级别,从高到低分别是bootstraploader(非java,没有实例) , ExtClassLoader, AppClassLoader.
加载时机
1)implicit隐式,即利用实例化才载入的特性来动态载入class
2)explicit显式,又分两种方式: 1)java.lang.Class的forName()方法
2)java.lang.ClassLoader的loadClass()方法
寻找class文件
bootstraploader查找url是sun.boot.class.path,默认对应jdk/jre/lib路径,是编译器最优先寻找class的地方
ExtClassLoader查找的url是系统变量java.ext.dirs,默认对应jdk/jre/lib/ext路径,是编译器次优先寻找class的地方
AppClassLoader查找的URL是由系统参数java.class.path决定,java.class.path是运行java.exe时 的-cp或-classpath或CLASSPATH环境变量,所以也是编译器默认找class的地方
to be continue