Что делает опция сжатия jlink? - PullRequest
8 голосов
/ 16 апреля 2019

Что делает опция сжатия jlink?Документация оракула не очень проработана:

Enable compression of resources:

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

Какие ресурсы сжимаются?Есть ли какой-то недостаток у --compress=2?

Ответы [ 2 ]

7 голосов
/ 17 апреля 2019

Есть ли недостаток --compress = 2

Я не знаю, как compress=2 внутренне сжимать модули или какие именно модули собираются сжимать штифт, но я обнаружил, что эта ошибка связана с производительностью

Данные о производительности / влияние на пользователей, чтобы определить, какую оптимизацию jlink следует выбрать

- стрип-отладка включена по умолчанию в сборке для образов JRE и уменьшает размер образа во время выполнения (lib / modules) на ~ 20% (130M -> 106M), не влияя на запуск

- compress = 0 уменьшает размер lib / modules на ~ 30% (106M -> 69.5M) и, на самом деле, кажется, выигрывает запуск в простых тестах (улучшение ~ 8 мс в Hello World).

- compress = 1 уменьшает размер lib / modules на ~ 54% (106M -> 49M), но имеет штраф к запуску (замедление ~ 8ms в Hello World)

- compress = 2 уменьшает размер lib / modules на ~ 53% (106M -> 49,5M), но приводит к еще большему штрафу при запуске (замедление ~ 13ms в Hello World)

По моему мнению, числовой аргумент уровня --compress является нелогичным и, возможно, должен вызываться явно вместо него (--compress = strings, --compress = zip). Поскольку кажется, что две разные стратегии сжатия работают друг против друга, возможно, они даже должны быть взаимоисключающими (удалить --compress = 2).

- compress = 0 обеспечивает баланс между улучшением запуска и статической посадкой, --compress = 1 минимизирует статическую посадку с небольшим штрафом ко времени запуска.

3 голосов
/ 16 апреля 2019

Это чисто на основе наблюдения. Я хотел бы увидеть более авторитетный ответ.

Появляется файл lib/modules в результирующем образе, представляющий собой некоторое двоичное объединение модулей приложения, которое сжимается. Я не знаю, каков формат этого файла на самом деле.

Я никогда не наблюдал никаких проблем с использованием --compress=2.

...