我试图使服务在容器中运行,但是在容器中的服务启动时遇到了{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
答案 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)将最大堆大小指定为该限制的分数。