8

我在这里阅读了很多关于可用于找出未使用的 JAR的工具的问答,例如:

  1. 松散罐
  2. 类路径助手

我的问题是,在编译时或运行时在类路径中有未使用的 JAR 是否有任何影响(例如将类加载到内存中、性能等)?问题适用于作为独立程序和 Web 服务器(Apache Tomcat)运行,尽管我最初只考虑独立程序。

注意:我正在运行 JDK 6u32(64 位)。

4

3 回答 3

8

在编译时或运行时在类路径中包含未使用的 JAR 是否有任何影响(例如将类加载到内存、性能等)?

会有不小的影响。当类加载器(或编译器的等价物)启动时,它必须读取每个 JAR 文件的索引以找出每个 JAR 中的类。如果类路径上有不必要的 JAR,类加载器还有更多工作要做,并且(至少暂时)会使用更多内存来缓存索引。

这适用于所有类型的 Java 应用程序。

你没有问的问题是影响是否显着。答案是“通常不会”……但是类路径上的“无用的东西”越多,影响就会越大。

于 2012-06-11T12:57:14.347 回答
3

主要问题不是性能,因为成本相对较小并且仅在加载新类时。主要问题是可维护性。例如,当一个库需要升级时,您可能会浪费大量时间来测试应用程序在新版本下仍然可以正常工作,结果却发现该库没有被使用。(假设您有一个新库,它需要您已经“使用”的库的更新版本)

于 2012-06-11T12:59:41.617 回答
0

是的,它有影响——因为 JVM 在 CLASSPATH 的 JAR 中寻找必要的类。保持密封的 JAR 也很有意义,告诉 JVM 不要在其他 JAR 中寻找相关的类。

PS:javac也是java程序,记录一下。

于 2012-06-11T12:56:09.713 回答