java类加载器

一,类加载器概述

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文件转换为字节码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值