1.什么是双亲委派机制?


双亲委派机制工作原理:(面试)
1.如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行。
2.如果父类的加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终会到达顶层的启动类加载器。(从这里就可以看出来,类加载请求都会先到达启动类加载器)
3.如果父类加载器可以完成类加载任务,就成功返回,倘若无法完成此加载任务,则委派给它的子加载器去加载。
如图所示,如果有个类加载请求来了,会一直向上委托,直到引导类加载器;然后引导类加载器尝试加载,如果它不能加载,则会给他的子加载器扩展类加载器加载;如果扩展类加载器还是不能加载;则再到下一级系统类加载器。

例子:
程序中需要使用spi接口,所以需要加载spi类库。通过双亲委派机制,加载spi的请求会到达引导类加载器,由于spi接口属于java的核心api,所以引导类加载器会直接进行加载。
spi是接口,要使用它的实现类,就涉及到了第三方的jar包,下图所示的例子使用jdbc类库,需要加载jdbc.jar。
需要加载第三方的jar包,不属于核心api,这时候需要系统类加载器进行加载。这时候会进行反向委派,引导类加载器会委派给扩展类加载器,扩展类加载器会委派给系统类加载器。实际上是由线程上下文加载器加载的,线程上下文加载器是系统类加载器的一种。
这个例子可以看到,接口是由引导类加载器加载的,而具体的实现类是由线程上下文加载器(也就是系统类加载器)加载的。

2.双亲委派机制的优势

1.避免类的重复加载。一旦一个类被父类加载器加载之后,就不会再被委派给子类进行加载。
2.保护程序安全。

保护程序安全的例子:
运行下面的例子,会直接报错。
运行main函数,需要加载ShkStart,根据双亲委派机制,加载请求会被向上委派到引导类加载器(记住第1小节的工作原理图);引导类加载器一看,包是java.lang,所以是由它来进行加载。
加载会直接报错,因为自己定义的类的包名为java.lang。

package java.lang; // 包命名为java.lang

/**
  • @author shkstart
  • @create 2020 下午 12:00

    */

    public class ShkStart { public static void main(String[] args) {

    System.out.println("hello!");

    }

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.沙箱安全机制

更多JVM文章请参考我的JVM专栏:https://blog.csdn.net/u011069294/category_10113093.html

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览118326 人正在系统学习中

【转帖】8.JVM双亲委派机制(面试常问)的更多相关文章

  1. [转帖]说一说JVM双亲委派机制与Tomcat

    说一说JVM双亲委派机制与Tomcat https://www.cnblogs.com/dengchengchao/p/11844022.html 讲个故事: 以前,爱捣鼓的小明突然灵机一动,写出了下 ...

  2. 说一说JVM双亲委派机制与Tomcat

    双亲委派模型与JVM 类加载 讲个故事: 以前,爱捣鼓的小明突然灵机一动,写出了下面的代码 package java.lang; public class String { //...复制真正Stri ...

  3. jvm双亲委派机制详解

    双亲委派机制 ​ 记录一下JVM的双亲委派机制学习记录. 类加载器种类 ​ 当我们运行某一个java类的main方法时,首先需要由java虚拟机的类加载器将我们要执行的main方法所在的class文件 ...

  4. 面试~jvm(JVM内存结构、类加载、双亲委派机制、对象分配,了解垃圾回收)

    一.JVM内存结构 ▷ 谈及内存结构各个部分的数据交互过程:还可以再谈及生命周期.数据共享:是否GC.是否OOM 答:jvm 内存结构包括程序计数器.虚拟机栈.本地方法栈.堆.方法区:它是字节码运行时 ...

  5. JVM加载类的过程,双亲委派机制中的方法

    JVM加载类的过程: 1)JVM中类的整个生命周期: 加载=>验证=>准备=>解析=>初始化=>使用=>卸载  1.1.加载 类的加载阶段,主要是获取定义此类的二进 ...

  6. 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题

    一.概述   定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型.类加载和连接的过程都是在运行期间完成的. 二. 类的 ...

  7. JVM学习六:JVM之类加载器之双亲委派机制

    前面我们知道类加载有系统自带的3种加载器,也有自定义的加载器,那么这些加载器之间的关系是什么,已经在加载类的时候,谁去加载呢?这节,我们将进行讲解. 一.双亲委派机制 JVM的ClassLoader采 ...

  8. JVM之类加载器、加载过程及双亲委派机制

    JVM 的生命周期 虚拟机的启动 Java 虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实 ...

  9. JVM类加载与双亲委派机制被打破

    前言 前文已经讲了虚拟机将java文件编译成class文件后的格式:JVM虚拟机Class类文件研究分析 java文件经过编译,形成class文件,那么虚拟机如何将这些Class文件读取到内存中呢? ...

  10. JVM探究(一)谈谈双亲委派机制和沙箱安全机制

    JVM探究 请你谈谈你对JVM的理解?java8虚拟机和之前的变化gengxin? 什么是OOM,什么是栈溢出StackOverFlowError JVM的常用调优参数有哪些? 内存快转如何抓取,怎么 ...

随机推荐

  1. 2023-08-08:给你一棵 n 个节点的树(连通无向无环的图) 节点编号从 0 到 n - 1 且恰好有 n - 1 条边 给你一个长度为 n 下标从 0 开始的整数数组 vals 分别表示每个节

    2023-08-08:给你一棵 n 个节点的树(连通无向无环的图) 节点编号从 0 到 n - 1 且恰好有 n - 1 条边 给你一个长度为 n 下标从 0 开始的整数数组 vals 分别表示每个节 ...

  2. GaussDB(DWS)集群中寻找节点CPU占用高的语句

    摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh 脚本寻找CPU占用高语句. 本文分享自华为云社区<GaussDB(DWS) gs_cpuwatcher.sh 脚本如何寻找CP ...

  3. 如何快速准备高质量的AI数据?

    摘要:随着AI的快速发展,如何快速准备大量高质量的数据已经成为AI开发过程中一个极具挑战性的问题! 本文分享自华为云社区<如何快速准备高质量的AI数据?>,原文作者:徐波. 一.背景 通常 ...

  4. 带你读AI论文丨用于细粒度分类的Transformer结构—TransFG

    摘要:本文解读了<TransFG: A Transformer Architecture for Fine-grained Recognition>,该论文针对细粒度分类任务,提出了对应的 ...

  5. vue2升级vue3:Vue2/3插槽——vue3的jsx组件插槽slot怎么处理

    插槽的作用 让用户可以拓展组件,去更好地复用组件和对其做定制化处理. Vue 实现了一套内容分发的 API,将<slot>元素作为承载分发内容的出口,这是vue文档上的说明.具体来说,sl ...

  6. 浅谈QUIC协议原理与性能分析及部署方案

    之前写过<http1.0 与 http1.1的区别> 与 <再谈HTTP2性能提升之背后原理-HTTP2历史解剖>,QUIC协议,现在nginx官方也即将支持.所以还是得跟上时 ...

  7. BBS项目(一):BBS需求分析 数据表设计 注册登录功能实现

    目录 BBS需求分析 数据表设计 注册页面前端 上传头像 提交数据 FormData 注册后端逻辑 接受参数 验证参数 数据入库 密码加盐操作 返回数据 登录页面前端 生成验证码 前端提交数据 登录后 ...

  8. 路由分发 路由别名的名称空间 虚拟环境 HTTPresponse JsonResponse request对象获取文件 CBV源码剖析 模板语法传值特性 模板语法过滤器

    目录 路由分发 路由别名冲突 反向解析失败 方式一:名称空间 include 方式二:别名不冲突即可 虚拟环境 python -m venv venv_name 视图层之必会三板斧 HTTPrespo ...

  9. Android 黑马 52 期视频,不加密,免费下载

    Android 黑马学习视频 目录 01.安卓基础+JNI (14天) 02.Android应用开 发-代码版本管理和实战(1天) 03.android案 例与项目_手机安全卫士(12天) 04.自定 ...

  10. 升讯威周报与工时统计系统 V3

    欢迎使用"升讯威周报与工时统计系统"本系统是一款适合各类型企业.机构.团队使用的周报填写.查询:工时上报.统计分析的软件. 本系统主要特点: 员工按周填写周报,录入工时:可区分项目 ...