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

问题描述 投票:0回答:3

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

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

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

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

java performance jar classpath
3个回答
9
投票

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

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

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

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


(IMO)在类路径上保留未使用的 JAR 的更重要问题是,它可能会增加维护开销。例如,如果有未使用的 JAR 文件碰巧存在漏洞,那么有人可能会浪费时间升级 JAR 以响应安全审核。


3
投票

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


0
投票

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

P.S.:javac也是一个java程序,郑重声明。

© www.soinside.com 2019 - 2024. All rights reserved.