首页 > 试题广场 >

说说JVM的双亲委派模型

双亲委派模型的工作过程是,如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去完成加载
发表于 2022-05-10 22:55:22 回复(0)
当我们使用一个类时会先对类进行加载,双亲委派模型就是java提供的一种类加载机制。java中默认存在三种类加载器:1,启动类加载器(BootstrapClassLoader),主要用于加载<java_home>\lib中的类库。2,扩展类加载器(ExtClassLoader),主要用于加载<java_home>\lib\ext文件夹下的类库。3,应用程序类加载器(Application ClassLoader),用于classpath下的类,即用户自定义的类。启动类加载器存在于jvm层面,使用c++语言编写,用户无法调用。双亲委派模型建立了一个逻辑上的从上到下的父子关系(启动类加载器,扩展类加载器,应用程序类加载器,这里的父子类不是继承关系),向上委派:当一个类加载器收到一个类加载请求后他不会立即执行类加载而时将请求向上转发交给父类加载器去执行。向下查找:当一个父类加载器无法加载某个类时便会将类加载的请求向下转发交给子类实现。双亲委派模型最大的优点是可以避免类的覆盖。</java_home></java_home>
发表于 2022-05-18 17:12:01 回复(0)
第一次见到双亲委派模型 可以写这么多😓
发表于 2022-08-30 00:24:39 回复(1)
1.JVM中双亲委派机制的过程:当AppClassLoader加载一个class时,它首先不会自己尝试去加载这个类,而是把这个类加载请求委托给父加载器ExtClassLoader去完成;当父加载器ExtClassLoader加载一个class时,它也不会自己尝试去加载这个类,而是将这个类加载请求委托给启动类加载器BootStrapClassLoader去完成;如果启动类加载器BootStrapClassLoader加载失败(即在$JAVA_HOME/jre/lib目录下找不到该class),则在父加载器ExtClassLoader中尝试加载该类;如果父加载器ExtClassLoader也加载失败,则在AppClassLoader中加载该类,若还是加载失败,则会报ClassNotFoundException异常。
发表于 2022-07-04 15:24:39 回复(0)
一个类加载器收到类加载请求的时候不会尝试加载这个类,而是向上传递该请求即给父类加载器直到传到最顶层的父类加载器(Bootstrap ClassLoader),让它加载该请求,如果父类完成不了该请求,才会向下传递该请求即给子类加载器完成(Extension ClassLoader-->App ClassLoader),如果加载不出该类加载请求会报如类找不到相关的错误。好处:确保java类库不会被修改保证安全性;避免重复加载类。
编辑于 2023-03-15 17:01:38 回复(0)
向上委托:向上查找缓存是否存在,存在直接返回; 向下加载:如果父类加载失败,子类尝试加载;
发表于 2023-03-01 20:06:17 回复(0)
双亲委派的理解:类加载器不会在获取到请求后直接加载,而是委托父加载器进行加载,如此类推,每一个类加载器都会反复如此直至最顶层的父加载器反馈没有对应的类则交给子加载器去层层向下加载。而JVM这么做的原因是: 1、不希望重复的类被加载,浪费内存降低性能 2、保护了程序的安全性,防止JAVA底层的核心API被修改从而影响程序后续运行
发表于 2022-12-04 19:51:34 回复(0)
每⼀个类都有⼀个对应它的类加载器。系统中的 ClassLoder 在协同⼯作的时候会默认使⽤ 双亲委派 模型 。即在类加载的时候,系统会⾸先判断当前类是否被加载过。已经被加载的类会直接返回,否则 才会尝试加载。加载的时候,⾸先会把该请求委派该⽗类加载器的 loadClass() 处理,因此所有的 请求最终都应该传送到顶层的启动类加载器 BootstrapClassLoader 中。当⽗类加载器⽆法处理 时,才由⾃⼰来处理。当⽗类加载器为null时,会使⽤启动类加载器 BootstrapClassLoader 作为 ⽗类加载器。
发表于 2022-06-25 20:58:36 回复(0)
既然你提到了java8及之前的。那是不是还得说说java8以后的?
发表于 2023-04-30 22:15:45 回复(0)
如果一个类收到类加载请求,它不会自己去加载这类 而是委派自己的父类去执行,只有父类没有在自己目录下找到指定路径,才会交给子加载器去执行
编辑于 2024-04-15 17:01:07 回复(0)
启动类加载器 扩展类加载器 应用程序类加载器 自底向上检查父类是否已经加载过,如果加载过不用加载直接返回,如果没有加载过依次向下委派判断是否能加载,如果找不到则会抛出类加载器未找到的异常 作用是:防止Java中的核心库被替换保证类的完整性和安全性,防止多次加载同一个类
编辑于 2024-04-02 18:29:36 回复(0)
启动类加载器 扩展类加载器 应用程序类加载器 自定义类加载器 双亲委派机制:自底向上检查类是否已加载 自顶向下尝试加载类
发表于 2024-03-16 15:41:14 回复(0)
编辑于 2024-03-08 14:28:54 回复(0)
如果一个类加载器收到了类加载的请求,它自己首先不会加载这个类 ,而是将这个请求交给自己的父类加载器完成,一直到最顶层的启动类加载器 只有父类加载器反馈自己无法加载时 子加载器才会尝试加载
编辑于 2024-03-05 20:33:53 回复(0)
理解:对一个类的加载,先委托给父加载器进行加载,一直委托父辈。直到父加载器没能加载该类,才会由本身进行加载。 其中的类加载器主要有: 启动类加载器- 扩展类加载器- 系统类加载器- 自定义加载器。 好处,保证了程序的执行顺序,以及避免某个类的重复加载。
发表于 2023-11-02 11:48:09 回复(0)
如果一个类加载器收到了类加载请求,会让父类进行加载,父类会向根加载器发送请求,让根加载器进行加载,如果根加载器无法加载,则父类加载器进行加载,父类加载器无法加载,则由Appclassloader进行加载,如如果依旧无法加载,则会抛出类加载异常
发表于 2023-09-20 12:12:57 回复(0)
Java虚拟机的双亲委派模型是类加载器的工作模型,它要求除了系统类加载器外,其他的类加载器都应有一个父类加载器。当一个类需要被加载时,首先会把这个任务委托给父类加载器,递归地向上委派,如果父类加载器无法加载这个类,那么子类加载器才会尝试去加载。这种模型保证了类的唯一性和安全性。
发表于 2023-07-15 03:40:58 回复(0)
给的什么答案啊,一堆废话
发表于 2023-03-16 20:29:24 回复(0)
45
发表于 2023-03-06 12:35:32 回复(0)
1.当我们使用一个类时会先对类进行加载,双亲委派模型就是java提供的一种类加载机制。

2.双亲委派模型的工作过程是,如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去完成加载

3.总结:向上加载,向下解析

编辑于 2023-02-27 10:51:24 回复(0)