此选项在docker文件中有什么作用?
ENTRYPOINT java -XX:+UseContainerSupport $JAVA_OPTIONS -jar /myapp.jar
Run Code Online (Sandbox Code Playgroud)
如果没有此参数,docker容器会启动吗?我检查了一篇文章说
启用内存支持
但我仍然不清楚。
小智 6
是。容器将以开头-XX:+UseContainerSupport。
-XX:+UseContainerSupport 用于分配更大部分的内存。
为了防止JVM在容器中运行时调整最大堆大小,请设置 -XX:-UseContainerSupport。
除此之外,https://www.eclipse.org/openj9/docs/xxusecontainersupport/可能会有所帮助。
从Java 10开始,此参数(默认情况下已启用)用于使JVM 在分配堆大小(而不是主机配置)时考虑容器内存限制。
该选项已安装到Java 8:https: //www.oracle.com/technetwork/java/javase/8u191-relnotes-5032181.html
例子:
如果您运行:
docker run **-m 1gb** openjdk:8u131 java -XshowSettings:vm -version
Run Code Online (Sandbox Code Playgroud)
结果将是(在我的机器上使用8gb的Ubuntu)
Max. Heap Size (Estimated): 1.68G
Run Code Online (Sandbox Code Playgroud)
我为容器设置了内存限制,但它忽略并使用了主机配置(默认情况下,它使用总内存/ 4)
现在,如果运行具有新功能的版本(上面的链接),您可以看到已考虑容器内存限制:
docker run **-m 1g** openjdk:8u191-jre-alpine java -XshowSettings:vm -version
Run Code Online (Sandbox Code Playgroud)
结果(总内存/ 4):
VM settings:
Max. Heap Size (Estimated): 247.50M
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM
openjdk version "1.8.0_191"
Run Code Online (Sandbox Code Playgroud)
在我写openjdk:8图像的最新版本时是222,因此您可以使用此版本,该版本具有背包功能。
想要查询更多的信息:
说明此标志在Java 10中的用法:https : //medium.com/adorsys/jvm-memory-settings-in-a-container-environment-64b0840e1d9e
在Java 8中使用此标志:https : //blog.softwaremill.com/docker-support-in-new-java-8-finally-fd595df0ca54
| 归档时间: |
|
| 查看次数: |
2207 次 |
| 最近记录: |