-XX:+UseCGroupMemoryLimitForHeap 启动参数 无法创建虚拟机问题
记录一个问题。因jdk11版本稳定,为了优化jvm内存和gc。
公司决定将jdk8升级到11。
#####因运行环境是k8s,为了使jvm保留根据容器规范的内存,在jdk8版本中加入了启动参数 UseCGroupMemoryLimitForHeap 。
但是在jdk11 中是不存在这个启动参数的。
从 8u191 开始引入了 java10+ 上的 UseContainerSupport 选项,而且是默认启用的,不用设置。同时 UseCGroupMemoryLimitForHeap 这个就弃用了,不建议继续使用,同时还可以通过 -XX:InitialRAMPercentage、-
XX:MaxRAMPercentage、-XX:MinRAMPercentage 这些参数更加细腻的控制 JVM 使用的内存比率。比如一些 Java 程序在运行时会调用外部进程、申请 Native Memory 等,所以即使是在容器中运行 Java 程序,也得预留一些内存给系统的。所以 -XX:MaxRAMPercentage 不能配置得太大。
参考文章:https://segmentfault.com/blogs
https://zhuanlan.zhihu.com/p/140849800