黑马程序员_高新技术之类加载器

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


一、类加载器概述

1、java程序是动态加载的,即JVM只会加载程序运行时用到的类文件,这种动态的类加载机制便是由类加载器实现的。

2、java虚拟机中可以安装多个类加载器,系统默认三个主要的类加载器,每个类负责加载特定位置的类。

a、引导类加载器:负责加载系统类,它是虚拟机整体的一部分,该加载器没有对应的ClassLoader对象。如String.Class.getClassLoader()为空;

b、扩展类加载器:用于从jre/lib/ext目录加载标准的扩展,可以将jar文件放入该目录,这样即使没有classpath扩展类加载器也能够找到个各类;

c、系统类(应用类)加载器:用于加载路径中的用户定义的类。

3、类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,正式BootStrap。


二、类加载器的委托机制

1、三种类加载器可认为存在一种运行商的父子关系(不是继承关系)即:ClassLoader类使用委托模型来搜索类和资源,每个ClassLoader实例都有一个相关的父类加载器,需要查找类或资源时,ClassLoader实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。

由父到子为:引导类加载器——扩展类加载器——应用类加载器

2、系统默认采用的类加载器为应用类加载器,但会首先委托给扩展类加载器,而扩展类加载器再委托给类加载器,若引导类加载器无法加载类,则由扩展类加载器加载,若还无法加载,则由应用类加载器加载。

3、类加载器之间父子关系和管辖范围图


三、自定义加载类

1、首先必须要继承ClassLoader

2、为了保证类加载器都正确实现代理模式,在开发自己的类加载器时,最好不要覆写loadClass()方法,而是覆写findClass()方法。


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值