11

jlink 压缩选项有什么作用?oracle 文档对此没有很详细的说明:

Enable compression of resources:

0: No compression
1: Constant string sharing
2: ZIP

什么是被压缩的资源?有什么缺点--compress=2吗?

4

2 回答 2

11

--compress=2 有什么缺点吗

我不知道如何在compress=2内部压缩模块或确切地知道哪些模块将有针对性地压缩引脚,但我发现了这个与性能有关的错误

性能数据/影响用户确定应该选择什么 jlink 优化

--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 最小化静态占用空间,但对启动时间的影响很小。

于 2019-04-16T21:32:45.747 回答
4

这纯粹是基于观察。我很想看到一个更权威的答案。

结果图像中的文件似乎lib/modules是应用程序模块的一些二进制合并,是被压缩的文件。我不知道该文件的格式实际上是什么。

我从未观察到使用--compress=2.

于 2019-04-16T20:48:58.630 回答