javaSE之类加载器

标签: javase 加载器 | 发表时间:2012-12-18 17:56 | 作者:
出处:http://www.iteye.com

类加载器,说白了就是加载类的呵呵

  .类加载器负责将.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之生成对应的java.lang.Class对象

  .当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构:

                 BootStrap----------JRE/lib.jar      根节点类加载器

                 ExtClassLoader-----------JRE/lib/ext/*.jar       扩展类加载器

                 AppClassLoader-----------CLASSPATH指定的所有jar或目录        应用类加载器也叫系统加载器

 

   BootStrap classloader: 引导(也称原始)类加载器,他负责加载java的核心类(也就是JDK自带类)

                                          这个加载器是非常特殊的,它实际上不是java.lang.ClassLoader的子类,而是由                                           JVM自身实 现的。可以通过执行一下代码来获得bootstrap classloader 加载了哪些

                                           核心类库:

                                URL[] urls = sun.misc.Launcher. getBootstrapClassPath (). getURLs ();

                                         for ( int i = 0; i < urls.length ; i ++) {

                                                System. out .println ( urls [ i ]. toExternalForm ());

                                          }

 

   extension classloader: 扩展类加载器,它负责加载JRE的扩展目录中的jar包,这为引入除java核心类以外的新功能

                                         提供了一个标准机制。因为默认的扩展目录对所有从同一个JRE中启动的JVM都是通用的所

                                         以,放入这个目录的JAR类包对所有的JVM和system classloader都是可见的。。

 

  (systemm)App classloader: 系统(也称为应用)类加载器,它负责在JVM被启动时,加载来自在命令java中的

                                                   classpath或者java.class.path系统属性或者CLASSPATH操作系统属性所指定

                                                   的JAR类包和类路径

 

  全盘负责委托机制:

           全盘负责:当一个classloader加载一个class的时候,这个classs所依赖的和引用的其他class通常也由这个

                          classloader负责载入。

 

           委托机制: 先让parent(父)类加载器寻找,只有在parent找不到的时候才从自己的类路径中寻找。

 

 类加载器还采用了cache机制:

                   如果cache中保存了这个class就直接反悔它,如果没有才从文件中读取和转换成class,并存入cache,

                   这就是为什么修改class但是必须重新启动JVM才能生效,并且类指加载一次的原因



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [javase 加载器] 推荐:

javaSE之类加载器

- - ITeye博客
类加载器,说白了就是加载类的呵呵.   .类加载器负责将.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之生成对应的java.lang.Class对象.   .当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构:.                  BootStrap----------JRE/lib.jar      根节点类加载器.

理解类加载器

- - CSDN博客推荐文章
转载请注明: http://blog.csdn.net/HEL_WOR/article/details/51287786. 5个月前写了第一篇博客就是类加载器,这两天在common-pool2中的驱逐逻辑里遇到了对上下文类加载器的使用,觉得需要重写写一次. 类记载器通俗来理解就是用来加载class文件,当需要创建一个对象时,都会使用到类加载器,对于继承自ClassLoader抽象类的子类加载器实现加载功能都是调用defineClass来完成的,这点在URLClassLoader中重写的findClass方法中可以看见.

关于类加载器内存泄露的分析

- - ITeye博客
从上个世纪90年代Java诞生之日起,Java的类和资源的加载就一直是个问题. 由于它增加了启动和初始化时间,因此这个问题在Java应用服务器上则尤为明显. 为了缓解这个问题,大家试过了不同的访问,比如说以exploaded方式部署,但这只对简单的应用有效;还有2001年发明的Java热插拔的机制.

Java类加载器classLoader的工作机制

- - CSDN博客推荐文章
类加载器就是寻找类或接口字节码文件进行解析并构造JVM内部对象表示的组件. 在Java中,类转载器把一个类装入JVM中,需要经过以下步骤:. 1.装载:查找和导入Class文件. 2.链接: 执行校验、准备和解析步骤,其中解析步骤是可以选择的:. a)校验: 检查载入Class文件数据的正确性;. b)准备:给类的静态变量分配存储空间;.