您的位置:首页 > 编程语言 > Java开发

java类加载器

2014-02-16 15:10 267 查看
一,类加载器概述

1,BootStrap  JRE/lib/rt.jar

ExtClassLoader  JRE/lib/ext/*.jar

AppClassLoader  classpath指定的所有jar或者目录

2,父子关系

BootStrap

ExtClassLoader

AppClassLoader

3,通过getParent()得到父亲加载器

那么根得到的是null,因为BootStrap是一个特殊的类加载器

是随着JVM启动而启动的,是一段C++的二进制代码

4,所有的类加载器都是一个对象

5,类加载器的委托机制

加载一直向上,让最根的类加载器加载(爷爷)

爷爷类加载器找不到,让父亲加载,父亲加载不了,

推给孙子(也就是发起者),找不到,抛出异常

不会抛给这个类加载的孩子。这样可以保证内存中

有一份唯一的字节码。

6,自定义类加载必须挂载在类加载树上

需要继承ClassLoader

7,加载一个类的时候,先使用当前线程的类加载器加载类

如果第第一个类引用了第二个类,那么第二个类的加载
是使用第一个类的类加载器,也可以强制指定一个类加载器进行加载

二,自定义类加载器

1,继承ClassLoader

2,仅仅需要覆盖findClass();

子类先使用父类的loadClass(),不成功的话使用自己的findClasss()

如果子类复写loadClass()那么就会自己干 

3,defineClass()将class文件转换为字节码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: