Custom Class Loader有什么用?

Pri*_*shi 15 java classloader

最近我遇到了java自定义类加载器api.我在这里发现了一个用途,kamranzafar的博客 我对类加载器概念有点新意.任何人都可以详细解释,我们可能需要它或我们应该使用它的不同场景是什么?

Ram*_*PVK 30

自定义类加载器在由多个模块/应用程序组成的较大体系结构中很有用.以下是自定义类加载器的优点:

  • 提供模块化架构允许定义多个类加载器,允许模块化架构.
  • 避免冲突清楚地在类加载器中定义类的范围.
  • 支持版本控制支持不同模块在同一VM中的不同版本的类.
  • 更好的内存管理可以删除未使用的模块,卸载该模块使用的类,从而清理内存.
  • 从任何地方加载类可以从任何地方加载类,例如,数据库,网络,甚至可以动态定义它们.
  • 动态添加资源或类以上所有功能都允许您动态添加类或资源.
  • 运行时重新加载已修改的类 允许您通过为包含已修改的类的实际类加载器创建子类加载器来重新加载类或类运行时.

  • 从这里可以看到一个有趣的(酷?)从任何地方加载类的例子:http://99-bottles-of-beer.net/language-java-1162.html (3认同)
  • 先生,我喜欢您的回答并理解您在说什么,但是,我没有看到一个关于如何使用它来解决任何问题的实际用例。请给出一些实际的例子来帮助我们理解类加载器的概念。 (2认同)

Mic*_*les 14

主要用途是在应用程序服务器中,以便它们可以运行两个应用程序而不会使类冲突.即,如果应用程序1具有与应用程序2同名的类,则自定义类加载器应用程序1将加载其类,应用程序2将加载其类.

此外,如果类由自定义类加载器加载,则可以从JVM卸载该类.在应用服务器中再次有用.

另一种用途是用于检测 - 一种进行面向方面编程或使用一些持久性API的方法.使用自定义类加载器,您可以在将已加载的类传递给正在运行的应用程序之前将其添加到已加载的类中.


mik*_*era 5

Java 类加载器的作用与名称差不多:将类加载到内存中,以便它们可以被使用。

类也与加载它们的类加载器链接。

因此,自定义类加载器开辟了各种有趣的可能性:

  • 使用不同的类加载器加载同一类的多个版本(例如,解决可能的版本冲突)
  • 在运行时动态加载和卸载类
  • 生成新类(例如 Clojure 等 JVM 语言使用各种类加载技巧来生成新的编译类以在运行时表示 Clojure 函数)
  • 从非标准源加载类

普通的 Java 应用程序通常不需要担心类加载器。但是,如果您正在编写需要托管其他代码的框架或平台,那么它们就变得更加重要/相关。