类加载器ClassLoader.


当Java需要使用类的时候会执行Class Loader. 预设上,在程序启动之后,主要分为3个Class Loader:BootstrapLoader,ExtClassLoader,AppClassLoader. BootstrapLoader是由C++编写而成,它负责搜索JRE所在的目录下的classes,或lib/ ...jar文件,是否有指定的类载入由系统(sun.boot.class.path)指定.
ExtClassLoader负责搜索JRE所在的目录下的lib/ext目录下的jar文件,classes.是否有指定的类载入由系统(java.ext.dirs)指定。
AppClassLoader则搜索Classpath中是否有class载入.由(java.class.path)指定。
BootstrapLoader 会在JVM启动的之后被载入,之后载入ExtClassLoader.并将parent设为BootStrapLoader.然后BootstrapLoader 会载入AppClassLoader.并将其parent设为ExtClassLoader.

在载入类的时候,每个类的加载器会将其任务交由parent。如果parent找不到。则由自己负责载入,如果还是找不到就会丢NoClassDefFoundError.
我们可以通过Class的getClassLoader()取得载入类的ClassLoader.

你可能感兴趣的:(jvm,C++,c,ext,sun)