【问题标题】:What does the jlink option compress do?jlink 选项 compress 有什么作用?
【发布时间】:2019-09-06 23:54:50
【问题描述】:

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

Enable compression of resources:

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

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

【问题讨论】:

标签: java java-9 jlink


【解决方案1】:

--compress=2有什么缺点

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

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

--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 上会减慢约 13 毫秒)

在我看来,--compress 的数字级别参数是违反直觉的,也许应该明确地调用(--compress=strings,--compress=zip)。由于这两种不同的压缩策略似乎相互矛盾,因此它们似乎甚至应该是互斥的(删除 --compress=2)。

--compress=0 在改善启动和静态占用空间之间取得平衡,--compress=1 最小化静态占用空间,但对启动时间的影响很小。

【讨论】:

  • 好吧......即使是很小的 jlink 也只有 37.7Mb.... 这对我来说仍然更大。艰难。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-18
    • 2016-11-02
    • 2012-02-17
    • 2017-01-11
    • 2013-09-02
    • 1970-01-01
    • 2017-07-24
    • 2012-08-03
    相关资源
    最近更新 更多