干java程序员有一段时间了,但是对JVM是怎么加载类的一直是懵懵懂懂,看了一些博客,现把自己对JVM的类加载器的一些理解和大家分享一下。
咱们的类经过javac编译后,生成.class文件保存下来,然后经过类加载器加载类至内存,生成java.lang.Class类的实例,这个实例就是程序访问这个类的入口,通过这个class实例的newInstance方法即可得到这个类的实例对象。
JVM中的类的加载器主要有三种:启动类加载器,拓展类加载器,应用类加载器。
启动类加载器(Bootstrap classLoader):又称为引导类加载器,由C++编写,无法通过程序得到。主要负责加载JAVA中的 一些核心类库,主要是位于<JAVA_HOME>/lib/rt.jar中。
拓展类加载器(Extension classLoader):主要加载JAVA中的一些拓展类,位于<JAVA_HOME>/lib/ext中,是启动类加载器 的子类。