Java jar文件中的大型资源的缺点?

时间:2015-03-05 17:45:02

标签: java performance jar embedded-resource

在部署的Java jar文件中嵌入大型资源文件是否有任何特定的,特定的缺点? (当然,忽略空间,带宽和其他更简单的jar文件大小问题。)

也就是说,在jar中有大量资源文件会使类加载速度变慢,在JVM中占用更多内存,还是会有类似的东西?

jar文件基本上只是一个zip文件,应该有一个中心目录,因此不必扫描整个文件以便在存档中加载特定文件。我不认为jar类加载器会将所有内容加载到文件中,只会加载所需的内容,但我可能会弄错。

1 个答案:

答案 0 :(得分:3)

按需加载类。对于普通的JAR,急切地加载很少(除非清单中有特定条目,我在那里有点生锈,但大多数人不使用它们)。 JVM根本不会将非类资源缓存在内存中,因此从JAR文件读取资源与从普通ZIP文件手动读取条目基本相同。我看到的唯一缺点是:

  1. 每次复制JAR时都会复制资源,即使它没有更改,也
  2. 从JAR文件(已压缩)读取资源,即使它类似于已经压缩的图像。
  3. 我认为ZIP文件支持按文件压缩算法,并支持无操作压缩算法,所以第二点可能无关紧要。