首页 > 其他分享 >jvm - 双亲委派机制详细解析及原理

jvm - 双亲委派机制详细解析及原理

时间:2023-07-31 10:38:29浏览次数:34  
标签:委派 Java classLoader 双亲 jvm 机制 加载

双亲委派机制是Java虚拟机中的一种类加载机制,它通过层层委托的方式保证了Java类的安全性和一致性。下面是对双亲委派机制的详细解析及原理。 在Java虚拟机中,类加载器负责将字节码文件加载到内存中并转化为可执行的Java类。而双亲委派机制是一种类加载器的工作方式,它的核心思想是:当一个类加载器收到加载类的请求时,它首先将这个请求委派给父类加载器处理,只有当父类加载器无法加载时,才由当前类加载器自己去加载。 这种层层委托的机制可以确保Java类的安全性和一致性:

  1. 安全性:通过双亲委派机制,Java类从上到下的层级结构,可以避免恶意代码通过自定义的类加载器加载到JVM中,保证了Java程序的安全性。
  2. 一致性:通过双亲委派机制,同一个类在不同的类加载器中只会被加载一次,避免了类的重复加载,确保了类的一致性。 下面是一个简单的Java代码示例,用于演示双亲委派机制的原理:
javaCopy codepublic class ClassLoaderDemo {
    public static void main(String[] args) {
        ClassLoader classLoader = ClassLoaderDemo.class.getClassLoader();
        while (classLoader != null) {
            System.out.println(classLoader.getClass().getName());
            classLoader = classLoader.getParent();
        }
    }
}

在这个示例中,我们通过ClassLoaderDemo.class.getClassLoader()获取当前类的类加载器,并通过循环打印出类加载器的名称。这里会打印出一系列的类加载器,从下到上依次是:应用程序类加载器(AppClassLoader)、扩展类加载器(ExtClassLoader)和引导类加载器(BootstrapClassLoader)。 这个示例说明了双亲委派机制的原理:当一个类加载器收到加载类的请求时,它首先将这个请求委派给父类加载器处理。如果父类加载器也无法加载该类,那么才由当前类加载器自己去加载。这样的层层委托关系保证了类的加载顺序和类的一致性。

标签:委派,Java,classLoader,双亲,jvm,机制,加载
From: https://blog.51cto.com/u_15702012/6905694

相关文章

  • JVM调优篇:探索Java性能优化的必备种子面试题
    JVM内存模型首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区(1.7之后更改为元空间,并直接使用系统内存)。正常堆内存又分为年轻代和老年代。在Java虚拟机中,年轻代用......
  • 《面试1v1》JVM内存模型
    聊聊JVM内存模型我是javapub,一名Markdown程序员从......
  • JDK、JRE、JVM三者介绍
    概念JDK:JavaDevelopmentKit,java开发者工具。JRE:JavaRuntimeEnviroment,java运行时环境。JVM:JavaVirtualMachine,java虚拟机。1.JDK包含了JRE和JVM,需要开发程序是,必须是要JDK工具包。2.JRE是支持程序运行的工具,如果不开发,只运行程序,只需要下载JRE即可,JRE也包含J......
  • JVM 常见错误汇总
    栈内存溢出栈内存错误包括:栈帧过多(StackOverflowError)、栈帧过大(OutOfMemoryError)StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的最大深度;OutOfMemoryError:如果虚拟机的占内存允许动态扩展,当扩展容量无法申请到足够的内存时;栈帧过多/***栈帧过多导致内存......
  • java启动jar包修改JVM默认内存问题
    JVM默认物理内存JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每......
  • cpu 操作系统 JVM(大白话)
    大白话直接描述下,cpu,操作系统和jvm:cpu就像健身房的跑步机硬件设备操作系统就是更有权威的大人(有很多权限)jvm及我们写的java应用,或其他用户程序,就像一群小朋友每个小朋友都想在跑步机上玩,大人就需要按某种规则安排(任务调度),只允许玩多久,每次换其他小朋友,都要记录下当前同学的......
  • JVM系统优化实践(23):GC生产环境案例(6)
    您好,这里是「码农镖局」51CTO博客,欢迎您来,欢迎您再来~在互联网大厂中,对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中,需要对用户的访问日志做脱敏处理,也就是清洗掉姓名、身份证号、手机号等个人隐私信息后在保存到数据库中或者交付给其他应用使用。系统的设计者......
  • JVM-对象实例化
    JVM-对象实例化1.创建对象的方式new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(XXX):反射的方式,可以调用空参、带参的构造器,权限没有要求使用clone(......
  • java笔记_11_JVM调优参数(转载)
    -Xms2048m//设置jvm的初始内存。这个值最好设置的跟-Xmx相同,以避免每次垃圾回收完成后JVM都要重新分配内存-Xmx2048m//JVM最大可用内存-XX:PermSize=256M//设置持久代大小-XX:MaxPermSize=512M//设置最大持久代大小-XX:+PrintGCDetails-XX:+PrintGCDat......
  • Java面试题 P2:Jvm新能调优
    1、JDK体系结构JDK由:java命令及常用工具+JRE组成(java运行时环境)JRE由:支撑java运行的各种类库+JVM(java运行时环境) 2、为什么java可以跨平台部署跨平台是由java虚拟机,jvm去实现的。 3、Java虚拟机内部组成结构图 java代码运行工作顺序:(1)先通过javac将Math.java编译为......