×
新网 > 虚拟主机 > 正文

Java虚拟机之类加载器

  • 作者:新网
  • 来源:新网
  • 浏览:100
  • 2018-05-02 17:51:23

之前我们简单的介绍了一下关于Java类的加载机制JAVA虚拟机之类的前世今生——类加载流程,现在我们再补充介绍一下JVM进行类加载的类加载器是如何使用的。

   之前我们简单的介绍了一下关于Java类的加载机制JAVA虚拟机之类的前世今生——类加载流程,现在我们再补充介绍一下JVM进行类加载的类加载器是如何使用的。

t016d9ff5f00f9a0ff2.jpg

<div>  Java类加载器的特点

  类加载器的作用是通过一个类的全限定名来获取描述此类的二进制字节流。通俗简单点可以理解为将类的.class文件中的二进制数据读入到内存中。同时要额外注意的是,类加载器不光是用于类的加载,同时也用于唯一确定一个类。换而言之,同一个类如果又不同的类加载器加载,那么这两个类其实是不同的。
  除此之外,我们还可以概括出类加载器的3个特性。委托性,可见性和单一性。
  委托性:当一个类加载器接收到了类加载请求,它首先把这个请求委托给他的父类加载器去完成,每个层次的类加载器都是如此,因此所有的加载请求都会被传送到顶层的启动类加载器中,只有当父加载器无法加载这个类也即在该类加载器的加载范围内无这个类时,子加载器才会尝试自己去加载。
  可见性:子类的加载器可见父类加载器加载的类,而父类加载器看不到子类加载器所加载的类
  单一性:一个类只会被加载一次
  常用类加载器
  从JVM的角度来看,只有两种类加载器,一种是由C++编写的启动类加载器,其属于虚拟机的一部分。一种是剩余其他所有类加载器。从开发人员的角度来看,又可以细分为4种类加载器,启动类加载器,扩展类加载器,应用程序类加载器,自定义类加载器。
  启动类加载器(Bootstrap ClassLoader):负责加载/lib目录或-Xbootclasspath路径下的并且是虚拟机识别的类库。且该类加载器无法被Java程序直接引用。
  扩展类加载器(Extension ClassLoader):负责加载/lib/ext或者java.ext.dirs系统变量锁指定的路径下的类库,可以被开发者直接使用
应用程序类加载器(Application ClassLoader):负责加载ClassPath(用户类路径)所指定的类库,该类加载器可以由getSystemClassLoader()方法获得,所以也被称为系统类加载器,开发者同样可以直接使用,一般情况下该类加载器为程序中的默认加载器。
以上就是虚拟机加载器的使用方式。

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading