首页 > 解决方案 > 为 Spring Boot 项目设置 Java 堆大小,并将嵌入式 tomcat 部署为 docker 映像

问题描述

我有一个部署在 docker 容器中的带有嵌入式 tomcat 的 Spring Boot REST 应用程序。我的部署 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。

标签: spring-bootdockerheap-size

解决方案


推荐阅读