当前位置:网站首页>双亲委派机制
双亲委派机制
2022-08-02 14:20:00 【风吹起海棠】
提到双亲委派机制,不得不提到ClassLoader类加载器,类加载器用于加载.class字节码到JVM中去执行。
JVM中包含3种加载器:
- BootstrapClassLoader:引导类加载器加载%JAVA_HOME%/lib目录下的jar文件,比如rt.jar、resource.jar,该加载器由C++实现
- ExtensionClassLoader:扩展类加载负责加载%JAVA_HOME%/lib/ext目录下的jar包和类,或者被java.ext.dirs系统变量所指定的路径下的jar包
- ApplicationClassLoader:系统类加载器用于加载当前应用classpath下的所有jar包和类
双亲委派模型介绍:
其实双亲委派模型不如叫做父委托模型,系统中的classLoader在协同工作时会默认采用双亲委派模型进行类加载。在进行类加载的时候,首先会判断这个类是否已经被加载过,如果已经加载则直接返回,否则会将加载的操作交由父类加载器的loadClass()进行处理,所有的请求都会先交由顶层加载器BootstrapClassLoader加载,当父加载器无法加载时,再交由子加载器进行加载,实现加载操作的层层委派。当父类加载器都无法加载时,会交由用户自定义加载器进行加载。
双亲委派模型的好处:
尝试加载类的时候,让类加载检查是否会被加载,最终都会到达顶层加载器,这样可以避免类的重复加载
优先将类加载请求交由顶层加载器加载,当有一个需要加载类的包名和核心类一样时,就不会加载该类,这样可以保证防止因加载该类而破坏核心API,这也叫做JVM的沙箱安全机制。
如何自定义一个加载器:自定义加载器需要继承ClassLoader,重写loadClass()方法,如果想要打破双亲委派机制,就重写findClass()方法。很多第三方的依赖中的类加载时都会采用自定义加载器,以便实现环境隔离
边栏推荐
- 怎么使用 smart_rtmpd 的纯 webrtc 功能?
- 这几年让你大呼惊人的AI应用,都离不开这项技术
- filebeat的配置
- [Fault Diagnosis] Weak Fault Diagnosis of Fan Bearing Based on PSO_VMD_MCKD Method
- 2021年度总结——收获圆满的一年
- CPU缓存一致性协议MESI
- DOM —— 页面的渲染流程
- Based on the SVM regression forecast 】 【 LibSVM realize the prediction of a characteristic data
- The DOM event type
- golang中使用泛型
猜你喜欢
随机推荐
怎么使用 smart_rtmpd 的纯 webrtc 功能?
CSV file with the data read and write 】 【 XLS/XLSX file
The DOM event type
abstract和接口的基础知识
nvm管理node版本 nodenpm不是内部或外部命令,也不是可运行的程序
为什么float4个字节比long8个字节所表示的数值范围广
Filter 过滤器
DOM - Event Object
网络运维系列:GoDaddy Shell DDNS配置
【Hiflow】 开辟新道路的自动化助手!
web渗透之文件上传漏洞
一分钟之内搭建自己的直播服务器?
【网络设备远程登陆配置SSH/Telnet 】
filebeat的配置
只出现一次的数字||| —— 哈希映射、异或位运算+分治思想
DOM —— 事件对象
DOM —— 事件绑定与解绑
FIR滤波器设计之窗函数法
对象头和synchronized的升级
test2