Полное использование памяти док-контейнера с JVM - PullRequest
1 голос
/ 29 марта 2019

У нас есть приложение микросервиса на основе Java, работающее в док-контейнере Так как сервисам требуются разные настройки памяти, мы должны указать пределы памяти для контейнера Docker и JVM (-Xmx).

Мне известно, что в Java есть поддержка контейнеров из Java 10, но это означает, что только определенные параметры учитывают ограничения ресурса контейнера.

Мой вопрос: есть ли какие-либо настройки, которые позволяют JVM полностью использовать доступную память контейнера? Например, если контейнер имеет 1 ГБ, JVM использует это, оптимально распределяя эту память между своей кучей и не кучей памяти (стек, классы и т. Д.).

1 Ответ

1 голос
/ 29 марта 2019

Нет волшебного флага, который бы увеличил объем памяти Java.Рабочая нагрузка одного микросервиса может отличаться от другой и потребовать другой конфигурации памяти.

Вам придется вручную установить -Xms, -Xmx и другие параметры.Если они не установлены, JVM будет использовать значения по умолчанию, например, -Xmx будет по умолчанию иметь 25% доступной оперативной памяти.

Java 8 и 9 имеют только +XX:+UseContainerSupport, но , так как Java 10 thisтеперь поведение по умолчанию.Эта опция заставляет JVM соблюдать ограничения ресурса, наложенные контейнером, но не автоматически масштабирует память.

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