Docker OpenJDK -Xmx或

时间:2018-08-15 01:43:32

标签: java docker jvm

我试图使服务在容器中运行,但是在容器中的服务启动时遇到了{name=map5, timestamp=04037} {name=map2, timestamp=00192} {name=map4, timestamp=00072} {name=map1, timestamp=00017} {name=map3, timestamp=00001} (它会做一些占用大量内存的工作)。

我正在尝试为OutOfMemoryError: Java heap space添加选项,但这没有用。

我也尝试使用

-Xmx1024 -Xms1024
{p>如OpenJDK Docker Hub文档中所述,但是当我运行该文档时,它失败并显示以下错误:

-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap

我当前使用的Unrecognized VM option 'UnlockExperimentalVMOptions XX:+UseCGroupMemoryLimitForHeap' 如下所示

Dockerfile

2 个答案:

答案 0 :(得分:1)

我认为您指定的参数不正确。这个:

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正常工作的原因。

答案 1 :(得分:0)

OpenJDK 10及更高版本自动检测cgroup限制,而无需任何其他标志(JDK-8146115)。此外,它们还允许您通过MaxRAMPercentage选项(JDK-8186248)将最大堆大小指定为该限制的分数。