JVM类加载器学习笔记

JVM类加载器

  1. Bootrap 启动类加载器,由C++编写,主要负责加载一些核心类库,主要是位于<JAVA_HOME>/lib/rt.jar中
  2. Extension 拓展类加载器, 主要加载JAVA中的一些拓展类,位于<JAVA_HOME>/lib/ext中
  3. System ClassLoader 系统类加载器,   主要用于加载CLASSPATH路径下我们自己写的类,是拓展类加载器的子类
  4. 自定义类加载器  继承java.lang.ClassLoader

如何验证类加载器

  • 首先自定义一个类,通过class.forName("类全路径");
  • clazz.getClassLoader() 获得类加载器
  • clazz.getClassLoader().getParent() 获取父类加载器
  • clazz.getClassLoader().getParent().getParent() 为null,因为启动类是C++写的,无法通过程序获取

常见问题

Object类是Bootstrap加载器加载

Extension和ClassLoader是Java.lang.ClassLoader

类加载器的三大特性

委托性:类加载时,会委托自己的父类去加载此类,如Student类会请求System ClassLoader的父类Extension扩展类加载器去加载此类,Extension扩展类加载器又会请求Bootstrap类去加载这个类。然而Bootstarp加载无法加载这个类,委托给Extension加载器,在Extension扩展类加载器无法加载时,又委托给ClassLoader加载

可见性:指的是父加载器无法利用子加载器加载的类,而子加载器可以利用父加载器加载的类。

单一性:一个类只会被加载一次,不会被重复加载

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值