十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天我们学习类加载器,关于类加载器其实和JVM有很大关系,在这里这篇文章只是简单的介绍下类加载器,后面学习到JVM的时候还会详细讲到类加载器,本文分为下面几个小节讲解:
成都创新互联公司是一家集网站建设,嫩江企业网站建设,嫩江品牌网站建设,网站定制,嫩江网站建设报价,网络营销,网络优化,嫩江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。一、认识类加载器
1.什么是类加载器?
所谓的类加载器可以从其作用来理解,其功能就是将classpath目录下.class文件,加载到内存中来进行一些处理,处理完的结果就是一些字节码.那是谁把这些class类加载到内存中来的呢?就是类加载器。
2.JVM中默认的类加载器有哪些?
java虚拟机中可以安装多个类加载器,系统默认三个主要的类加载器,每个类加载器负责加载不同位置的类:BootStrap,ExtClassLoader,AppClassLoader
注意的是:
1.类加载器本身也是一个java类,因为类加载器本身也是一个java类,那么这个特殊的java类【类加载器】是有谁加载进来的呢?这显然要有第一个类加载器,这第一个类加载器不是一个java类,它是BootStrap。
2.BootStrap不是一个java类,不需要类加载器java加载,他是嵌套在java虚拟机内核里面的。java 虚拟机内核已启动的时候,他就已经在那里面了,他是用c++语言写的一段二进制代码。他可以去加载别的类,其中别的类就包含了类加载器【如上面提到的Ext 和 app】。
案例:
下面我们写个例子来获取ClassLoaderTest这个类的类加载器的名字,代码如下:
package study.javaenhance; import java.util.ArrayList; public class ClassLoaderTest { public static void main(String[] args) throws Exception { //获取类加载器,那么这个获取的是一个实例对象,我们知道类加载器也有很多种,那么因此也有其对应的类存在,因此可以获取到对应的字节码 System.out.println(ClassLoaderTest.class.getClassLoader()); //获取类加载的字节码,然后获取到类加载字节码的名字 System.out.println(ClassLoaderTest.class.getClassLoader().getClass().getName()); //下面我们看下获取非我们定义的类,比如System ArrayList 等常用类 System.out.println(System.class.getClassLoader()); System.out.println(ArrayList.class.getClassLoader()); } }