类加载器1.类加载器的概述 负责将.class文件加载到内存中,并为之生成对应的Class对象。我们的最终目标是学习类加载器的加载机制,了解这个机制我们就能更好的理解程序的运行。 2.类加载器的分类Bootstrap ClassLoader 根类加载器 Extension ClassLoader 扩展类加载器 Sysetm ClassLoader 系统类加载器 3.类加载器的作用1.Bootstrap ClassLoader 根类加载器,也被称为引导类加载器,负责Java核心类的加载,比如System,String等。在JDK中jre的lib目录下rt.jar文件中 2.Extension ClassLoader 扩展类加载器负责JRE的扩展目录中jar包的加载。在JDK中JRE的lib目录下ext目录 3.Sysetm ClassLoader 系统类加载器(又叫做Application ClassLoader)负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径 4.类加载器原理 父类委托机制:先让父类加载器寻找,只有在父类加载器找不到的情况下才从自己的类路径中去寻找 举例 比如当我们执行java Dog的时候,肯定要先加载Dog.class,本来这个类应该由System Classloader加载,但是这个类加载有父亲,所以就交给Extension Classloader类加载器加载,这个类加载器还有爸爸最后就交给BootStrap Classloader去加载。但是BootStrap 类加载器加载的rt.jar包中并没有这个Dog类,无法加载,就又返回给Extension 类加器加载,这个类加载器在ext目录也找不到Dog类,就又返回给System类加器加载器,如果从classpath目录找到了Dog类就加载,找不到就报错ClassNotFoundException
|