JVM调优参数之UseContainerSupport

JVM调优参数之UseContainerSupport,第1张

基于Docker等容器方式运行Java应用时,容器的资源管理使用了 *** 作系统cgroup机制,但是JVM无法感知cgroup。

也就是说在没有UseContainerSupport参数支持的JDK版本中,JVM是无法感知容器环境存在,对容器资源的限制比如内存或者cpu等都无法生效。在这种情况下,如果JVM申请的内存大于容器的内存,容器就会把当前进程kill掉,所以必须要让JVM感知到能使用的最大内存,这样可以及时进行GC。

UseContainerSupport作用 

 为了支持JVM感知cgroup的内存限制,在JDK1.8的8u91版本之后引入了默认开启的UseContainerSupport参数。

另外,由于容器内存管理方式的出现,仅仅通过Xmx、Xms参数来配置JVM中堆内存的方式无法很好地适配通过容器内存调整来管理JVM内存大小。

所以JVM还提供了MaxRAMPercentage,InitialRAMPercentage,MinRAMPercentage三个参数,这三个参数用途是指定JVM堆内存的相对容器内存的占比。通过控制容器内存大小就能实现动态控制JVM内存大小,例如容器分配4G,如果MaxRAMPercentage设置为75.0则JVM最大堆内存为4*0.75即3G,如果要提升JVM堆内存大小只需要调整容器内存即可。

一般来说MaxRAMPercentage MinRAMPercentage参数可以配置为75.0或80.0。

配置示例 
-XX:+UseContainerSupport
-XX:MaxRAMPercentage=75.0
-XX:InitialRAMPercentage=75.0
-XX:MinRAMPercentage=75.0

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/917255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存