【大白话说Java面试题 第49题】【JVM篇】第9题:什么是双亲委派机制?介绍一下运作过程。?
PDF大白话说Java面试题 — 02-JVM篇第9题什么是双亲委派机制介绍一下运作过程。回答核心概念双亲委派机制是 JVM 中类加载器的工作模式用于保证类加载的安全性和一致性。它的核心思想是当某个类加载器收到类加载请求时优先委托给父类加载器完成加载任务只有在父类加载器无法加载时才会由当前类加载器尝试加载。1. 运作过程步骤详解判断是否已加载类加载器首先检查目标类是否已经被加载通过findLoadedClass方法。如果已加载则直接返回该类的Class对象无需重复加载。向上委托如果未加载类加载器会将加载任务交给其父类加载器。父类加载器同样先检查是否已加载如果未加载则继续向上传递直到交给顶级的引导类加载器Bootstrap ClassLoader。引导类加载器尝试加载引导类加载器负责加载核心类库如java.lang.String如果可以加载则直接加载并返回如果无法加载则将任务交还给子类加载器。逐级向下尝试加载子类加载器依次尝试加载目标类直到成功加载或抛出ClassNotFoundException异常。代码示例以下伪代码展示了双亲委派机制的实现逻辑protectedClass?loadClass(Stringname,booleanresolve)throwsClassNotFoundException{// 1. 检查是否已加载Class?cfindLoadedClass(name);if(cnull){try{// 2. 委托父类加载器加载if(parent!null){cparent.loadClass(name,false);}else{// 3. 如果没有父类加载器则由引导类加载器加载cfindBootstrapClassOrNull(name);}}catch(ClassNotFoundExceptione){// 父类加载器无法加载}if(cnull){// 4. 当前类加载器尝试加载cfindClass(name);}}returnc;}2. 双亲委派的特点自上而下加载任务从引导类加载器开始逐级向下传递确保核心类库优先加载。避免重复加载每个类只会被加载一次避免重复加载导致的资源浪费和潜在冲突。安全性保障防止用户自定义类篡改核心类库如java.lang.String提升系统安全性。面试官视角面试官可能会问“为什么需要双亲委派机制”答为了保证核心类库的安全性防止用户自定义类覆盖核心类同时避免重复加载同一类。面试官可能会追问“如何打破双亲委派机制”答可以通过自定义类加载器并重写loadClass方法绕过父类加载器的优先级。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2610304.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!