openjdk9-openj9 (正确的辨认容器限定,3G)安详
- [root@xiaoke-test ~]# docker run -m 4GB --rm adoptopenjdk/openjdk9-openj9:alpine-slim java -XshowSettings:vm -version
- VM settings:
- Max. Heap Size (Estimated): 3.00G
- Using VM: Eclipse OpenJ9 VM
- openjdk version "9.0.4-adoptopenjdk"
- OpenJDK Runtime Environment (build 9.0.4-adoptopenjdk+12)
- Eclipse OpenJ9 VM (build openj9-0.9.0, JRE 9 Linux amd64-64-Bit Compressed References 20180814_248 (JIT enabled, AOT enabled)
- OpenJ9 - 24e53631
- OMR - fad6bf6e
- JCL - feec4d2ae based on jdk-9.0.4+12)
openjdk10-openj9 (正确的辨认容器限定,3G)安详
- [root@xiaoke-test ~]# docker run -m 4GB --rm adoptopenjdk/openjdk10-openj9:alpine-slim java -XshowSettings:vm -version
- VM settings:
- Max. Heap Size (Estimated): 3.00G
- Using VM: Eclipse OpenJ9 VM
- openjdk version "10.0.2-adoptopenjdk" 2018-07-17
- OpenJDK Runtime Environment (build 10.0.2-adoptopenjdk+13)
- Eclipse OpenJ9 VM (build openj9-0.9.0, JRE 10 Linux amd64-64-Bit Compressed References 20180813_102 (JIT enabled, AOT enabled)
- OpenJ9 - 24e53631
- OMR - fad6bf6e
- JCL - 7db90eda56 based on jdk-10.0.2+13)
openjdk11-openj9(正确的辨认容器限定,3G)安详
- [root@xiaoke-test ~]# docker run -m 4GB --rm adoptopenjdk/openjdk11-openj9:alpine-slim java -XshowSettings:vm -version
- VM settings:
- Max. Heap Size (Estimated): 3.00G
- Using VM: Eclipse OpenJ9 VM
- openjdk version "11.0.1" 2018-10-16
- OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
- Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.11.0, JRE 11 Linux amd64-64-Bit Compressed References 20181020_70 (JIT enabled, AOT enabled)
- OpenJ9 - 090ff9dc
- OMR - ea548a66
- JCL - f62696f378 based on jdk-11.0.1+13)
说明
说明之前我们先相识这么一个环境:
JavaMemory (MaxRAM) = 元数据+线程+代码缓存+OffHeap+Heap...
一样平常我们都只设置Heap纵然用-Xmx来指定JVM可行使的最大堆。而JVM默认会行使它获取到的最大内存的1/4作为堆的缘故起因也是云云。
安详性(即不会高出容器限定被容器kill)
OpenJdk
OpenJdk8-12,都能担保这个安详性的特点(8和9必要非凡参数,-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap)。
OpenJ9
2.IbmOpenJ9全部的版本都能辨认到容器限定。
资源操作率
OpenJdk
自动辨认到容器限定后,OpenJdk把最大堆配置为了或许容器内存的1/4,对内存的挥霍不行谓不大。
虽然可以共同另一个JVM参数来设置最大堆。-XX:MaxRAMFraction=int。下面是我清算的一个常见内存配置的表格, 从中我们可以看到好像JVM默认的最大堆的取值为MaxRAMFraction=4,跟着内存的增进,堆的闲置空间越来越大,在16G容器内存时,java堆只有不到4G。
- MaxRAMFraction取值 堆占比 容器内存=1G 容器内存=2G 容器内存=4G 容器内存=8G 容器内存=16G
- 1 ≈90% 910.50M 1.78G 3.56G 7.11G 14.22G
- 2 ≈50% 455.50M 910.50M 1.78G 3.56G 7.11G
- 3 ≈33% 304.00M 608.00M 1.19G 2.37G 4.74G
- 4 ≈25% 228.00M 455.50M 910.50M 1.78G 3.56G
OpenJ9 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|