【JVM学习笔记】双亲委托机制存在的意义
2024-09-05 04:40:41
1.可以确保Java核心库的类型安全:所有的Java应用都至少会引用java.lang.Object类,也就是说在运行期,java.lang.Object这个类会被加载到Java虚拟机;如果用户自定义的类加载器可以加载Object类,那么很可能就会在JVM中存在多个版本的java.lang.Object类,而且这些类之间还是不兼容的,相互不可见的(正是命名空间在发挥着作用)。借助于双亲委托机制,Java核心类库中的类加载工作都是由启动类加载器来同意完成加载工作,从而确保了Java应用所使用的都是同一个版本的Java核心类库,他们之间是相互兼容的;
2.可以确保Java核心类库所提供的类不会被自定义的类所替代。假设我们自己定义了一个java.lang.Object,这个类是无法被加载到JVM中的,因为系统启动时,首先会由启动类加载器加载rt.jar包中的java.lang.Object,之后我们的类在被加载时会因为名字相同而被认为是已经加载过了,不会进行加载。
3.不同的类加载器可以为相同名称(binary name)的类创建额外的命名空间,相同名称的类可以并存在Java虚拟机中,只需要用不同的类加载器来加载它们即可。不同的类加载器所加载的类是不兼容的,这相当于在JVM中创建了一个又一个相互隔离的Java类空间,这类技术在很多框架中都得到了实际应用(比如OSGI)
最新文章
- 自己实现简单的string类
- Python无聊的总结
- bzoj3192 [JLOI2013]删除物品
- Python是编译运行的
- nagios plugin 开发
- Hibernate从入门到精通(十)多对多单向关联映射
- .net mvc Authorization Filter,Exception Filter与Action Filter
- ASM丢失disk header导致ORA-15032、ORA-15040、ORA-15042 Diskgroup无法mount
- python之路——面向对象
- cookie的增删改查函数
- [翻译] 使用 Python 创建你自己的 Shell:Part II
- Monkey
- react native (1) 新建页面并跳转
- shiro授权测试
- MySQL的log_bin和sql_log_bin 的区别
- bzoj4448 情报传递
- WPF和js交互 调用窗体中的方法
- SMS
- Vue之双向绑定原理动手记
- FreeBSD查看即时网络流量