【面试题精讲】JVM-JDK9之后的类加载器

2023-10-28 10:30:43 浏览数 (2)

特性

JDK 9 类加载器

JDK 8 及以前的类加载器

模块系统

引入了模块系统(Java Platform Module System)

没有模块系统

命名空间隔离

使用模块系统实现了命名空间隔离,不同模块的类无法直接互相访问

没有明确的命名空间隔离,所有类都在同一个全局命名空间中

直接字节码处理

引入了 JEP 238 (Multi-Release JAR Files)以及 JEP 261 (Module System)

不支持直接字节码处理

默认类加载器变更

采用了平台类加载器进行默认加载,将 Bootstrap 类加载器委派给平台类加载器

使用扩展类加载器和应用程序类加载器作为默认加载器

全量类加载器执行顺序变更

利用模块系统与类加载器实现了双亲委派的全量类加载器执行顺序变更

按照双亲委派模型执行全量类加载器

拓展类加载器与系统类加载器分离

拓展类加载器与系统类加载器分离,拓展类加载器只加载 JDK 本身的扩展模块

拓展类加载器与系统类加载器混合在一起

热替换(HotSwap)

引入了更先进的 HotSwap 实现,支持在运行时替换代码和重新定义类

HotSwap 功能有限,只能替换某些特定方法的实现

新的类加载器

引入了jimage类加载器和AppCDS类加载器

没有这些新的类加载器

0 人点赞