JVM——类加载机制和双亲委派模型

JVM——双亲委派模型

传送门

1. 什么是类加载器

在java语言中,类(class)只有被加载到JVM中才能被运行。当一个程序要运行时,JVM会将编译生成的.class文件加载到内存中去。这个加载的过程就是有类加载器(ClassLoader)实现的。

编辑器编译 javac
类加载器加载
Hello.java
Hello.class
内存

2. 类加载器有哪些

  • 启动类加载器(Bootstrap ClassLoader):负责加载JAVA_HOME\lib目录中的,都是最基础的文件,是虚拟机的一部分,被虚拟机认可的类,是用c++编写的。
  • 扩展类加载器(Extension ClassLoader):负责加载JAVA_HOME\lib\ext目录中的,是基础文件。
  • 应用类加载器(App ClassLoader):也叫系统类加载器,负责加载用户路径(classpath)上的类库,第三方jar包和自己编写的java文件。

3. 什么是双亲委派模型

通过双亲委派机制协调三个加载器完成类的加载

  • 双亲委派机制的具体过程
    1. 当应用类加载器接收到加载任务时,把任务委托给它的父加载器扩展类加载器;扩展类加载器接收到加载任务时,把任务继续委托给父加载器启动类加载器;
    2. 如果启动类加载器没有找到所需加载的类,就将此加载任务退回子加载器扩展类加载器;扩展类加载器也做同样的事情;
    3. 如果应用类加载器仍然没有找到所需的class文件,则抛出异常。

在这里插入图片描述

  • 双亲委派机制的好处

确保类的全局唯一

如果自己写的类与核心类库中的类重名了,那么该类可以被编译,但无法被加载运行。因为按照双亲委派机制,该类会被委托到启动类类加载器加载,而启动类可以查到核心库中的类,并加载该核心类。

确保系统的安全

通过双亲委派机制,JVM总是先从核心库中查找类,这样可以防止不可信的类假扮成被信赖类对系统造成伤害

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值