为什么jvm有很多clasloaders?为什么不是一个?

2022-09-03 09:37:51

我正在学习Java,那么我想知道,为什么JVM有很多类加载器,为什么不只有一个?首先加载,然后加载,最后加载。ClassLoader<Java_Runtime_Home>/lib<Java_Runtime_Home>/lib/extclasspath

如果你有自定义类装入器,系统是第一个。

有人可以告诉我为什么JVM有很多类加载器?


答案 1

一个非常有用的应用程序是能够将多个Web应用程序部署到单个Java EE服务器中。

每个应用程序可能使用相同库的不同版本,因此必须具有与其他应用程序不同的类装入器,以便能够在单个 JVM 中具有相同类的不同版本。


答案 2

支持多个类装入器有几个原因。

第一:类的分离。想象一个应用程序服务器。多个独立的项目可能包含相同的库。如果每个应用程序都有自己的类装入器,它们可以加载不同的版本而不会发生冲突,并且每个类装入器实例化AFAIK静态字段。

第二:可以覆盖类装入器来更改类。类装入器可以在装入期间增强类。适用于面向方面的编程 (AspectJ) 或添加调试或性能分析代码。一种只修改一个库而不修改另一个库的简单方法是通过不同的类装入器装入它。


推荐