首页 > 其他 > 详细

对类加载器(ClassLoader)的理解

时间:2017-12-05 11:07:03      阅读:284      评论:0      收藏:0      [点我收藏+]

类加载器(ClassLoader)

  当编辑器编译java源文件后,会产生以个相对一的字节码文件(.class) 

  当程序执行开始之前,必须将这个文件载入内存中,生成一个与之匹配的Class对象,

  任何以个类加载之后jvm都会为其创建以个唯一的class对象(元对象),再后续都是通过这个Class对象来创建实例,后话(Class对象就是放射的基石。)

  这个过程我们称之为类加载  

 

  要弄清楚类加载的机制,授信我们必须要清楚了解类加载的相关知识,它是完成整个类加载的重要工具。

  简单的说,当有个Class文件载入内存之后,并构建成一个Class对象的过程,就称之为类加载

类加载器(三类)

1,启动类加载器(BootStrap ClassLoader)

  启动类加载器是负责加载jdk核心包下的类文件,对应的目录就是“JDK安装目录/jre/lib”。其中最重要的以个jar文件就是rt.jar

  注意:这个类加载器我们是没有办法区操作的,因为它本身是用c++语言实现的

2,扩展类加载器(Extension ClassLoader)

  这个类加载器,是由启动类加载器来加载的,扩展类加载器是用java语言实现,它主要负责加

  载jdk里面的扩展jar文件,对应 目录是"/JDK安装目录/jre/lib/ext"

3,应用程序类加载器(Application ClassLoader)

  这个类加载器也是使用java语言实现,它同样由引导类加载器加载。它主要负责加载我们开发人员说明编写的java类,通常对应的目录就是环境变量下的ClassPath路径

 

双亲委托模型

  jvm的类加载时基于双亲委托模型,也就是当我们编写一个任意类的时候,本身不是由应用程序加载器立即加载,而是先委托给夫加载器,当夫加载器再自己说明加载的范围内找不到相对应的class文件时,最后才会将加载权交回给子加载器区加载,这样做的目的是为了保证jvm的安全机制

技术分享图片

双亲委托模型的工作流程:

  如果以个类加载器收到类加载的请求,它首先不会自己先尝试加载这个类,而是把请求委托给父类加载器去完成,依次向上,因此,所有的类加载器请求最终都应该被传递到顶层的启动类的加载器中,只有当父加载器在它的搜索范围中没有找到所需要的类时,即无法完成该加载,子加载器才会尝试自己去加载类

 

 

对类加载器(ClassLoader)的理解

原文:http://www.cnblogs.com/javaLin/p/7985667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!