面试篇:JVM-类加载和双亲委派

面试题:类加载过程,双亲委派机制

类加载过程分为三个阶段

  1. 加载
    ① 将类的字节码载入方法区,并创建类.class对象放入
    ② 如果此类的父类没有加载,先加载父类
    ③ 加载是懒惰执行的
  2. 链接
    ① 验证 - 验证类是否符合Class规范性,合法性,安全性检查
    ② 准备 - 为static变量分配空间,设置默认值
    ③ 解析 - 将常量池的符号引用解析为直接引用
  3. 初始化
    ① 执行静态代码块与非final静态变量的赋值
    ② 初始化时懒惰执行

双亲委派

  1. 所谓双亲委派,就是指优先委派上级类加载器进行加载,如果上级类加载器
    ① 能找到这个类,由上级加载,加载后该类也对下级加载器可见
    ② 找不到这个类,则下级类加载器才有资格执行加载
    在这里插入图片描述

  2. 能不能自己写个类叫java.lang.system?
    不行
    ① 假设自己写的类加载器用双亲委派机制,那么优先由启动类加载器加载真正的System类
    ② 假设自己写的类加载器不用双亲委派,加载自己写的类时,需要先加载父类java.lang.Object,而没有用委派会导致失败
    ③ 自定义类加载器加载以java.打头的类时会抛安全异常,jdk9以上将这些特殊包名与模块进行了绑定,编译都过不了

    双亲委派的目的有两点:
    ① 让上级类加载器中的类对下级共享,即能让你的类能依赖到jdk提供的核心类
    ② 让类的加载有优先次序,保证核心类优先加载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值