Java 中的 MaxRAMPercentage 支持,它仅适用于容器还是我们也可以在容器外使用

我已经在 aws bean stalk 和 procfile 中部署了我的 java 服务,我想指定堆内存,我想以这样的方式指定,即使在更改底层硬件 (RAM) 之后,我的服务也不应该受到影响,我想通了我可以用百分比指定它,而不是硬编码堆值(xmx,xms),但后来我对此感到困惑https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8196595

是只在容器内使用还是也可以在容器外使用


慕仙森
浏览 440回答 1
1回答

呼唤远方

MaxRAMPercentage 是 JVM 参数,因此它被定义为“容器内部”(如果您的术语指的是在 Elastic Beanstalk 内部运行的进程)。作为附加说明,要使用它,您可以在 AWS 控制台 - Elastic Beanstalk - [实例] - 配置 - 修改软件 - 环境属性 --> 添加属性名称 = "JAVA_TOOL_OPTIONS", value = "-XX:MaxRAMPercentage= 80”为例。“外部容器”一词令人困惑。但是,参考您上面提到的错误,我猜您混淆了 JVM 参数是用于 Docker 容器内的 java 进程还是适用于任何/普通 java 进程。参考这个bug 8186315,引入了MaxRAMPercentage。然后是 JDK 10 中引入的错误8196595,以改进在 Docker 容器中运行的 Java 的执行和可配置性。所以这意味着 XX:MaxRAMPercentage(以及 XX:InitialRAMPercentage 和 XX:MinRAMPercentage)可以在 docker 容器内使用,也可以在 docker 容器外使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java