jlink 压缩选项有什么作用?oracle 文档对此没有很详细的说明:
Enable compression of resources:
0: No compression
1: Constant string sharing
2: ZIP
什么是被压缩的资源?有什么缺点--compress=2
吗?
--compress=2 有什么缺点吗
我不知道如何在compress=2
内部压缩模块或确切地知道哪些模块将有针对性地压缩引脚,但我发现了这个与性能有关的错误
--strip-debug 在 JRE 映像的构建中默认启用,并将运行时映像(lib/modules)的大小减少约 20%(130M -> 106M),对启动没有影响
--compress=0 将 lib/modules 的大小降低了约 30%(106M -> 69.5M),实际上似乎有利于在简单测试中启动(Hello World 改进约 8 毫秒)。
--compress=1 将 lib/modules 的大小降低了约 54%(106M -> 49M),但会导致启动损失(Hello World 上约 8ms 减速)
--compress=2 将 lib/modules 的大小降低了约 53%(106M -> 49.5M),但对启动的影响更大(在 Hello World 上减速约 13ms)
在我看来,--compress 的数字级别参数是违反直觉的,也许应该明确地调用(--compress=strings,--compress=zip)。由于看起来这两种不同的压缩策略正在相互对抗,因此它们似乎甚至应该是互斥的(删除 --compress=2)。
--compress=0 在改善启动和静态占用空间之间取得平衡,--compress=1 最小化静态占用空间,但对启动时间的影响很小。
这纯粹是基于观察。我很想看到一个更权威的答案。
结果图像中的文件似乎lib/modules
是应用程序模块的一些二进制合并,是被压缩的文件。我不知道该文件的格式实际上是什么。
我从未观察到使用--compress=2
.