java 类的加载器含义及分类 标签: javajvmclassclassloader 2016-07-19 14:20 469人阅读 评

类的加载器是将.class文件,加载到内存(JVM)中,并生成java.lang.class对象。

加载到JVM中的类都有一个唯一的标识,用其包名和类名作为其标识(java.lang.String就相当于一个标识)。

JVM在运行时会产生3个类加载器组成的初始化加载器层次结构

App/System ClassLoader
系统(应用)类加载器:负责java –classpath 或 –D java.class.path所指的目录下的类与jar包装入工作 ,是最常用的加载器
可以通过ClassLoader的静态方法getSystemLoader()来获取系统类的加载器。如果没有特别指定,则用户自定义的类的加载器都以此类加载器作为父类。

Extension ClassLoader
扩展类加载器:负责jre/lib/ext目录下的jar包或 –D java.ext.dirs 指定目录下的jar包装入工作库

Bootstrap ClassLoader
引导类加载器:用C++编写的,是JVM自带的类加载器,负责Java平台核心库,用来加载核心类库。该加载器无法直接获取

从 系统类加载器 到 扩展类加载器 到 引导类加载器,检查是否已加载,反之尝试加载类。

JVM的根加载器并不是由java实现的,所以无法通过程序获取跟加载器Bootstrap ClassLoader

类加载器加载Class大致要经过几个步骤

  1. 检测此Class是否载入过(及在缓存区中知否由此Class),如果有则直接最后一步。
  2. 如果父类加载器存在,则是直接使用父类在加载器去加载目标类,否则直接使用根加载器去加载载入目标类。如果能找到目标类的文件则直接加载成功,否则抛出ClassNotFoundException异常。
  3. 返回对应的java.lang.Class类对象。
posted @ 2016-07-19 14:20  xzcl  阅读(133)  评论(0编辑  收藏  举报