Настройка размера кучи Java для проекта Spring boot со встроенным tomcat, развернутым как образ docker

#spring-boot #docker #heap-size

#spring-boot #docker #размер кучи

Вопрос:

У меня есть приложение spring boot REST со встроенным tomcat, развернутым в контейнере docker. В моем файле развертывания YAML установлены следующие значения —

 resources:
  limits:
    memory: 2.5G
  requests:
    memory: 512M

 env:
 - name: "SPRING_PROFILES_ACTIVE"
   value: "dev"
 - name: "JAVA_OPTS"
   value: "-Xms512m -Xmx1024m"
  

и файл docerfile является —

 FROM openjdk:8-jdk
ARG ARTIFACT_NAME
WORKDIR /app
COPY $ARTIFACT_NAME /app/app.jar
ENTRYPOINT exec java $JAVA_OPTS -jar /app/app.jar
  

Но размер кучи JVM не устанавливается равным 1G. Я даже пытался использовать

 -XX: UnlockExperimentalVMOptions 
-XX: UseCGroupMemoryLimitForHeap 
-XX:MaxRamFraction=2
  

но результат всегда показывает MaxRamFraction как 4.

Комментарии:

1. Вы docker inspect загрузили изображение? Пробел перед env случайным в SO или он также присутствует в вашем реальном файле?

2. Да, я проверил модуль, и распределение памяти выглядит нормально. Максимальный размер кучи установлен равным 1/4 от доступной памяти, которую я не могу увеличить, изменив MaxRAMPercentage или MaxRamFraction или Xmx. В файле YAML нет проблем с пространством, приложение работает нормально.