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

时间:2012-06-11 12:53:15

标签: java performance jar classpath

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

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

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

3 个答案:

答案 0 :(得分:8)

  

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

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

P.S。:javac也是一个java程序,用于记录。