📌PDF:大白话说Java面试题 — 02-JVM篇
第10题:双亲委派模型的好处是什么
📚回答:
- 核心优势:
双亲委派模型的设计带来了两大核心好处:安全性和一致性。
1. 核心类库的安全性
定义:
- 双亲委派模型确保核心类库(如
java.lang.String)由引导类加载器加载,避免被用户自定义类篡改。
- 双亲委派模型确保核心类库(如
实际场景:
- 假设用户自定义了一个名为
java.lang.String的类,如果没有双亲委派机制,程序可能会加载用户自定义的类,导致核心功能被破坏。 - 在双亲委派模型下,引导类加载器会优先加载核心类库中的
String类,从而保护系统的安全性。
- 假设用户自定义了一个名为
2. 避免重复加载
定义:
- 双亲委派模型确保每个类只被加载一次,避免重复加载导致的资源浪费和潜在冲突。
实际场景:
- 如果多个类加载器都尝试加载同一个类,双亲委派机制会确保父类加载器优先加载,子类加载器只需复用已加载的类,从而提高效率。
3. 总结对比
| 特性 | 安全性 | 一致性 |
|---|---|---|
| 描述 | 确保核心类库不被篡改 | 避免同一类被多次加载 |
| 实现方式 | 自上而下优先加载核心类库 | 父类加载器优先加载,子类复用 |
| 典型应用 | 防止用户自定义类覆盖核心类 | 提高类加载效率,减少资源浪费 |
💡面试官视角:
- 面试官可能会问“双亲委派模型如何保证核心类库的安全性?”答:通过自上而下的加载顺序,确保核心类库由引导类加载器加载,用户自定义类无法覆盖。
- 面试官可能会追问“双亲委派模型有哪些局限性?”答:对于某些特殊需求(如热部署、动态加载),双亲委派模型可能不够灵活,需要通过自定义类加载器打破机制。