JVM(八) 类加载器

来源:互联网 发布:阿里java开发规范手册 编辑:程序博客网 时间:2024/05/24 05:37

前面博客中简单提到类加载器,并有demo展示。在这里详细介绍一下。

http://blog.csdn.net/qwlzxx/article/details/71404166


类加载器用来把类加载到Java虚拟机中。

类加载器之间的关系:

     

Java虚拟机自带的类加载器

根(Bootstrap)类加载器:该加载器没有父加载器。它负责加载虚拟机的核心类库,如java.lang.*等。之前博客中提到Test1.java的例子,返回null(http://blog.csdn.net/qwlzxx/article/details/71404166)说明了这一点。根类加载器从系统属性sun.boot.class.path所指定的目录中加载类库。根类加载器的实现依赖于底层操作系统,属于虚拟机的实现的一部分,它并没有继承java.lang.ClassLoader类。

扩展(Extension)类加载器:它的父加载器为根类加载器。它从java.ext.dirs系统属性所指定的目录中加载类库,或者从JDK的安装目录的jre\lib\ext子目录(扩展目录)下加载类库,如果把用户创建的JAR文件放在这个目录下,也会自动由扩展类加载器加载。扩展类加载器是纯Java类,是java.lang.ClassLoader类的子类。

系统(System)类加载器:也称为应用类加载器,它的父加载器为扩展类加载器。它从环境变量classpath或者系统属性java.class.path所指定的目录中加载类,它是用户自定义的类加载器的默认父加载器。系统类加载器是纯Java类,是java.lang.ClassLoader类的子类。

用户自定义的类加载器

用户可以定制自己的类加载器(User-defined Class Loader)。Java提供了抽象类java.lang.ClassLoader, 所有用户自定义的类加载器应该继承ClassLoader类。



         

    

0 0
原创粉丝点击