JVM:类加载机制与双亲委派
理解类加载全过程、双亲委派模型及其安全意义,以及 Tomcat/Spring 等场景为何需要"破坏"双亲委派。
本节你将能
描述类从加载到初始化的过程,解释双亲委派如何保证类唯一性,并举例说明何时需要打破它。
核心要点
- 过程:加载 → 验证 → 准备 → 解析 → 初始化。
- 双亲委派:收到请求先委派父加载器,父无法加载才自己加载,保证类唯一与安全。
- 破坏场景:SPI/JDBC 用线程上下文类加载器;Tomcat 的 WebAppClassLoader 优先加载本应用类实现隔离。
面试连招
追问:Tomcat 为什么不用默认双亲委派?热部署为什么可能导致 Metaspace 泄漏?