在CLASSPATH中使用未使用的JAR文件的影响

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

  1. loosejar
  2. Classpath Helper

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

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

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

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

这适用于各种Java应用程序。

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

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

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

PS:javac也是一个java程序,用于记录。