Java Docker OpenJDK-Xmx或
我试图让一个服务在一个容器中运行,但当容器中的服务启动时(它执行一些内存密集型操作),我遇到了Java Docker OpenJDK-Xmx或,java,docker,jvm,Java,Docker,Jvm,我试图让一个服务在一个容器中运行,但当容器中的服务启动时(它执行一些内存密集型操作),我遇到了OutOfMemoryError:Java堆空间 我正在尝试添加-Xmx1024-Xms1024的选项,但没有成功 我还试图使用 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap 但是,正如文档中提到的,当我运行它时,它会失败,并出现以下错误: Unrecognized VM option 'UnlockExperime
OutOfMemoryError:Java堆空间
我正在尝试添加-Xmx1024-Xms1024
的选项,但没有成功
我还试图使用
-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
但是,正如文档中提到的,当我运行它时,它会失败,并出现以下错误:
Unrecognized VM option 'UnlockExperimentalVMOptions XX:+UseCGroupMemoryLimitForHeap'
我正在使用的当前Dockerfile
如下所示
FROM openjdk:8u131
...
...
CMD ["java","-XshowSettings:vm -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap","-jar", "target/my-jar.jar"]
我认为您指定的参数不正确。这:
CMD ["java",
"-XshowSettings:vm -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap",
"-jar", "target/my-jar.jar"]
应该是:
CMD ["java",
"-XshowSettings:vm",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UseCGroupMemoryLimitForHeap",
"-jar", "target/my-jar.jar"]
使用
CMD[…]
时,需要提供与shell完全相同的参数。这也可能是您无法使-Xmx1024-Xms1024
工作的原因。打开jdk 10并向上自动检测cgroup限制,而无需任何附加标志()。此外,它们还允许您通过MaxRAMPercentage
选项()将最大堆大小指定为该限制的分数