java - 多个(甚至可能未使用的)jar文件的大型类路径效率低下

标签 java performance memory jar

我的看法,(如果我错了,请纠正我)缓存了一个类,因此只有在第一次引用该类时才需要搜索类路径。它只会在调用静态初始化程序时发生,这在程序的生命周期中只有一次。 (或者更具体地说,类加载器)

但是对于一个包含许多可能会或可能不会使用的库的大型、长生命周期的程序。

Jar 文件是否被加载到内存中,由于大多数类从未使用过而导致不必要的使用?它会留在内存中吗?

引用目录是更好的选择吗?或者 Jar 文件是否已经解压缩到一个临时位置?

目录方式比jar文件方式快吗?

将所有 Jar 文件提取到单个目录中以减少类路径中的位置数量是否合理?什么时候是个好主意?

最佳答案

这不是问题,您不必担心。类加载器足够聪明,可以加载它需要的类,并且经常按需加载类(即它通常不会加载一堆不会使用的代码)。这与您的应用程序运行的大小或时间无关。

在大量 JAR 的情况下,我会更关心 JAR Hell .

至于更快的问题,我想各种方法之间可能存在一些差异,但如果有的话,您可以通过实验轻松地自行测试。这种情况可能是特定于应用程序的,因为每个应用程序加载的代码都不同。

我认为 smooth reggae's答案对于类加载主题的一些额外细节很有用。

关于java - 多个(甚至可能未使用的)jar文件的大型类路径效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8593199/

相关文章:

ios - GPU 内存因 GPUImage 而崩溃

php - MongoDB游标和内存

java - "throw this"在回溯中产生奇怪的行

java - SonarQube java.lang.ClassCastException : ParametrizedTypeJavaType cannot be cast to ParametrizedTypeJavaType

java - 如何将颜色从 ColorPicker 转换为 javaFX 中的字符串值

c++ - 循环、功能设计和效率 : two questions

java - solr索引存储在内存或磁盘中

javascript - 检查类或添加类,哪个性能更好

python - 多维数组之间的欧氏距离的 Numpy 运算

检查 C 中的内存释放是否正确