在类路径中包含未使用的 JAR 文件的影响



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

  1. 松罐
  2. 类路径帮助程序

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

注意:我运行的是 JDK 6u32(64 位)。

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

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

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

你没有问的问题是影响是否显着。 答案是"一般没有"...但是类路径上的"无用的东西"越多,影响就越大。

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

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

PS:javac也是一个java程序,记录在案。

最新更新