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

时间:2019-07-17 06:30:56

标签: java amazon-web-services amazon-elastic-beanstalk

我已经将我的java服务部署在aws bean茎和procfile中,我想指定堆内存,我想以一种方式指定,即使更改底层硬件(RAM)之后,我的服务也不会受到影响,并且我发现不用硬编码堆值(xmx,xms),我可以按百分比指定它,但是后来我对这个https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8196595

感到困惑

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

1 个答案:

答案 0 :(得分:1)

MaxRAMPercentage是JVM参数,因此它是在“内部容器”中定义的(如果您的术语是指在Elastic Beanstalk内部运行的进程)。还要注意,要使用它,可以在AWS控制台上设置-Elastic Beanstalk-[实例]-配置-修改软件-环境属性->添加属性名称=“ JAVA_TOOL_OPTIONS”,值=“ -XX:MaxRAMPercentage = 80“,例如。

“外部容器”一词令人困惑。但是,参考您上面提到的错误,我想您是将该JVM参数用于Docker容器内的Java进程还是适用于任何/普通Java进程感到困惑。参考此错误8186315,介绍了MaxRAMPercentage。然后是JDK 10中引入的错误8196595,以改善在Docker容器中运行的Java的执行和可配置性。

因此这意味着XX:MaxRAMPercentage(以及XX:InitialRAMPercentage和XX:MinRAMPercentage)可以在docker容器内使用,也可以在docker容器外使用。