java 类加载原理解析

java 类加载原理解析

ID:17954567

大小:192.00 KB

页数:12页

时间:2018-09-11

java 类加载原理解析_第1页
java 类加载原理解析_第2页
java 类加载原理解析_第3页
java 类加载原理解析_第4页
java 类加载原理解析_第5页
资源描述:

《java 类加载原理解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java类加载原理解析分类:java应用2010-07-1414:0755人阅读评论(0)收藏举报Java类加载原理解析                                        1      基本信息摘要:每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和java语言的动

2、态性都有很大帮助。由于关于java类加载的内容较多,所以打算分三篇文章简述一下:第一篇:java类加载原理解析第二篇:插件环境下类加载原理解析第三篇:线程上下文类加载器分类:开发技术->J2EE标签:Java类加载类加载器双亲委派机制自定义类加载器作者:朱兴 创建于2007-6-22         MSN:zhu_xing@live.cn 2      Java虚拟机类加载器结构简述2.1   JVM三种预定义类型类加载器我们首先看一下JVM预定义的三种类型类加载器,当一个JVM启动的时候,Java缺省开始使用如下三种类型类装入器:启动(Bootstrap)类加载器:引导类装入器是用

3、本地代码实现的类装入器,它负责将/lib下面的类库加载到内存中。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。标准扩展(Extension)类加载器:扩展类加载器是由Sun的ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将/lib/ext或者由系统变量java.ext.dir指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。系统(System)类加载器:系统类加载器

4、是由Sun的AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。开发者可以直接使用系统类加载器。除了以上列举的三种类加载器,还有一种比较特殊的类型就是线程上下文类加载器,这个将在后面单独介绍。2.2   类加载双亲委派机制介绍和分析      在这里,需要着重说明的是,JVM在加载类时默认采用的是双亲委派机制。通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完

5、成此加载任务时,才自己去加载。关于虚拟机默认的双亲委派机制,我们可以从系统类加载器和标准扩展类加载器为例作简单分析。                                 图一 标准扩展类加载器继承层次图                           图二 系统类加载器继承层次图      通过图一和图二我们可以看出,类加载器均是继承自java.lang.ClassLoader抽象类。我们下面我们就看简要介绍一下java.lang.ClassLoader中几个最重要的方法://加载指定名称(包括包名)的二进制类型,供用户调用的接口publicClassloadCl

6、ass(Stringname)throwsClassNotFoundException{//…}//加载指定名称(包括包名)的二进制类型,同时指定是否解析(但是,这里的resolve参数不一定真正能达到解析的效果~_~),供继承用protectedsynchronizedClassloadClass(Stringname,booleanresolve)throwsClassNotFoundException{//…}//findClass方法一般被loadClass方法调用去加载指定名称类,供继承用protectedClassfindClass(Stringname)thr

7、owsClassNotFoundException{//…}//定义类型,一般在findClass方法中读取到对应字节码后调用,可以看出不可继承(说明:JVM已经实现了对应的具体功能,解析对应的字节码,产生对应的内部数据结构放置到方法区,所以无需覆写,直接调用就可以了)protectedfinalClassdefineClass(Stringname,byte[]b,intoff,intlen)throwsClassFormatError

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。