Что делает параметр VM UseContainerSupport? - PullRequest
0 голосов
/ 04 февраля 2019

Что делает эта опция в файле Docker?

ENTRYPOINT java -XX:+UseContainerSupport $JAVA_OPTIONS -jar /myapp.jar

Будет ли контейнер Docker запускаться без этого параметра?Я проверил одну статью , в которой говорится,

включить поддержку памяти

, но мне все еще не ясно.

Ответы [ 2 ]

0 голосов
/ 15 августа 2019

Начиная с Java 10, этот параметр (который включен по умолчанию) используется для того, чтобы JVM учитывала ограничения памяти контейнера при выделении размера кучи, а не конфигурации хост-машины.

Этот параметр был добавлен в Java 8: https://www.oracle.com/technetwork/java/javase/8u191-relnotes-5032181.html

Примеры:

Если вы запустите:

docker run -m 1gb openjdk:8u131 java -XshowSettings:vm -version

Результат будет (включенмоя машина Ubuntu с 8 ГБ)

Max. Heap Size (Estimated): 1.68G

Я установил лимит памяти для контейнера, но он проигнорировал и использовал конфигурацию хоста (по умолчанию используется 1/4 от общей памяти)

Теперь, если я запустил версию с новой функцией (ссылка выше), вы увидите, что ограничение памяти контейнера было учтено:

docker run -m 1g openjdk:8u191-jre-alpine java -XshowSettings:vm -version

Результат:

VM settings:
    Max. Heap Size (Estimated): 247.50M
    Ergonomics Machine Class: server
    Using VM: OpenJDK 64-Bit Server VM

openjdk version "1.8.0_191"

НаКогда я пишу это, версия openjdk: 8 - это 222. Поэтому вы можете использовать эту версию.

Для получения дополнительной информации:

Объясняет использование этого флага в Java 10: https://medium.com/adorsys/jvm-memory-settings-in-a-container-environment-64b0840e1d9e

Использование этого флага с Java 8: https://blog.softwaremill.com/docker-support-in-new-java-8-finally-fd595df0ca54

0 голосов
/ 04 февраля 2019

Да.Контейнер запустится без -XX:+UseContainerSupport.

-XX:+UseContainerSupport, который используется для выделения большей доли памяти.

Чтобы запретить JVM регулировать максимальный размер кучи при работе в контейнере, установите-XX:-UseContainerSupport.

В дополнение к этому, https://www.eclipse.org/openj9/docs/xxusecontainersupport/ может быть полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...