在部署的Java jar文件中嵌入大型资源文件是否有任何特定的,特定的缺点? (当然,忽略空间,带宽和其他更简单的jar文件大小问题。)
也就是说,在jar中有大量资源文件会使类加载速度变慢,在JVM中占用更多内存,还是会有类似的东西?
jar文件基本上只是一个zip文件,应该有一个中心目录,因此不必扫描整个文件以便在存档中加载特定文件。我不认为jar类加载器会将所有内容加载到文件中,只会加载所需的内容,但我可能会弄错。
答案 0 :(得分:3)
按需加载类。对于普通的JAR,急切地加载很少(除非清单中有特定条目,我在那里有点生锈,但大多数人不使用它们)。 JVM根本不会将非类资源缓存在内存中,因此从JAR文件读取资源与从普通ZIP文件手动读取条目基本相同。我看到的唯一缺点是:
我认为ZIP文件支持按文件压缩算法,并支持无操作压缩算法,所以第二点可能无关紧要。