我已经将我的java服务部署到了aws bean stalk上,并且在procfile中我想指定堆内存,我想以这样一种方式指定:即使在更改底层硬件(内存)之后,我的服务也不应该受到影响,我想我可以用百分比来指定它,而不是硬编码堆值(xmx,xms),但后来我被这个https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8196595弄糊涂了。
它是只在容器内部使用,还是也可以在容器外部使用
发布于 2019-07-17 17:02:20
MaxRAMPercentage是JVM参数,所以它被定义为“内部容器”(如果你的术语指的是在Elastic Beanstalk内部运行的进程)。作为附加说明,要使用它,您可以在AWS控制台上设置- Elastic Beanstalk - instance - Configuration - Modify Software - Environment properties --> add property name = "JAVA_TOOL_OPTIONS",value = "-XX:MaxRAMPercentage=80“。
术语“外部容器”是令人困惑的。但是,关于您上面提到错误,我猜您搞不懂JVM参数是用于Docker容器内的java进程,还是适用于任何/普通的java进程。针对这个bug 8186315,引入了MaxRAMPercentage。然后是JDK10中引入的bug 8196595,以提高在Docker容器中运行的Java的执行和可配置性。
这意味着XX:MaxRAMPercentage (和XX:InitialRAMPercentage和XX:MinRAMPercentage)可以在docker容器内部使用,也可以在docker容器外部使用。
https://stackoverflow.com/questions/57069775
复制相似问题