jlink选项压缩有什么作用?

时间:2019-04-16 19:48:13

标签: java java-9 jlink

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

Enable compression of resources:

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

压缩哪些资源? --compress=2有什么不利之处吗?

2 个答案:

答案 0 :(得分:7)

--compress = 2

是否有任何不利之处?

我不知道compress=2是如何内部压缩模块的,或者确切地是哪个模块将明确地压缩引脚,但是我发现此错误与性能有关

Performance data/impact for users to determine what jlink optimization should be selected

  

-默认情况下,在JRE映像的构建中启用了trip-debug,并且将运行时映像(库/模块)的大小减小了约20%(130M-> 106M),而对启动没有影响

     

-compress = 0使lib /模块的大小减少了约30%(106M-> 69.5M),实际上似乎在简单测试中使启动受益(在Hello World方面约有8毫秒的改进)。

     

-compress = 1将lib /模块的大小减少了约54%(106M-> 49M),但启动时受到了损失(Hello World的速度下降了约8ms)

     

-compress = 2将lib /模块的大小减少了约53%(106M-> 49.5M),但启动时的代价更大(Hello World上的速度为13ms慢)

     

在我看来,--compress的数字级别参数是违反直觉的,因此应该改为显式调用(--compress = strings,--compress = zip)。由于似乎两种不同的压缩策略正在相互影响,因此似乎它们甚至应该互斥(删除--compress = 2)。

     

-compress = 0在改善启动和静态占用空间之间取得平衡,-compress = 1最大限度地减少了静态占用空间,对启动时间的影响很小。

答案 1 :(得分:3)

这纯粹是基于观察。我希望看到更权威的答案。

在压缩后的结果图像中出现lib/modules文件,它是应用程序模块的二进制合并。我不知道该文件的实际格式。

我从未发现使用--compress=2有任何问题。