美文网首页
JVM(五)-双亲委派机制

JVM(五)-双亲委派机制

作者: 五大人 | 来源:发表于2020-10-14 13:19 被阅读0次

机制背景:

Java虚拟机对Class文件采用的是按需加载的方式,只有在需要使用该类时,才会将它的class文件加载到内存中生成lcass对象。

描述:

加载某个类的class文件时,虚拟机采用的是双亲委派模式。即把请求交由父类处理,它是一种任务委派模式。

优势:

1、避免类的重复加载

2、保护程序的安全,放置核心API被随意篡改

工作原理:

1、如果一个类收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给其父类的加载器来执行

2、如果其父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器

3、如果父类加载器可以完成类的加载任务,就成功返回;如果无法完成类的加载任务,子加载器才回尝试自己去进行加载。

双亲委派机制工作原理

案例:

自定义一个java.lang文件包,并创建一个String类。

程序内使用String类时,类的加载任务会被委派到顶层的引导类加载器。则始终加载的是核心类库rt.jar中的String类。自定义的String类,永远不会被加载到。(也是基于系统类加载安全的考虑)

双亲委派的反向委托:

反向委托

当父类加载器无法加载到需要的类库时,则会反向委托到其下一级的类加载器进行加载。

沙箱安全机制:

自定义重复的核心类库的时候,比如String类。引导类加载器在加载的时候,仍然会加载核心类库的String类。自定义的类并不会被加载到。

而且,在核心类包下,自定义非重复的类,引导类加载器在进行加载的时候,出于安全机制,会报安全错误。

   其他

JVM必须知道一个类型是由启动加载器加载的,还是由用户类加载器加载的。如果一个类型是由用户类加载加载的,那么JVM会将这个类加载器的一个引用作为类型信息的一部分保存在方法区中。当解析一个类型到另一个类型的引用的时候,JVM需要保证这两个类型的类加载器是相同的。

类的主动使用和被动使用

区别:类会不会被初始化。会初始化的时候是类的主动使用

主动使用分为七种情况:

创建类的实例

访问类或接口的静态方法,或则好对该静态变量赋值

调用类的静态方法

反射(比如:Class.forName(""))

初始化一个类的子类

Java虚拟机启动的时候别表明为启动类的类

JDK7开始提供的动态语言支持:

java.lang.invoke.MethodHandle示例的解析结果

REF_GetStatic、REF_putStatic、REF_invokeStatic句柄对应的类没有初始化,则初始化

其他使用Java类的方式都被看作是对类的被动使用,都不会导致类的初始化。

相关文章

  • JVM——类加载机制

    前言 今天就来介绍类的加载机制以及双亲委派机制。 JVM 类加载机制 JVM 类加载的五个阶段 JVM 类加载机制...

  • JVM笔记二双亲委派机制

    JVM笔记二双亲委派机制 JVM双亲委派机制,简单来说:我爸是李刚,有事找我爸。用三个字来说:往上捅。不信?咱们一...

  • JVM(五)-双亲委派机制

    机制背景: Java虚拟机对Class文件采用的是按需加载的方式,只有在需要使用该类时,才会将它的class文件加...

  • JVM双亲委派机制

    什么是双亲委派机制? 要想搞明白什么是双亲委派机制就要先知道三个概念 1. 什么是类的加载? 将java代码通过类...

  • Java虚拟机

    JVM 组成部分 类加载器 执行引擎 内存区 本地方法调用 类加载器 双亲委派模型 类的加载过程采用双亲委派机制,...

  • 2018-07面试题目

    1. JVM的类加载机制 主要是双亲委派模型的东西。它是什么、怎么工作的、为什么要有它,以及打破双亲委派模型的...

  • JVM学习:双亲委派机制

    一、原理 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加...

  • JAVA类加载机制

    jvm之java类加载机制和类加载器(ClassLoader)的详解java类加载机制:全盘负责、双亲委派、缓存机...

  • java类的加载机制

    概念 类的生命周期 类加载器 jvm类加载机制 类的加载方式 双亲委派模式

  • 从类加载开始的JVM学习

    目录 引言 java类加载流程 java类加载机制- 类加载原理- 双亲委派机制 Tomcat中双亲委派机制的应用...

网友评论

      本文标题:JVM(五)-双亲委派机制

      本文链接:https://www.haomeiwen.com/subject/bugupktx.html