- XX:-UseContainerSupport与-XX:MaxRAMPercentage配合使用时,是否会自动计算其他JVM资源大小?

syqv5f0l  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(164)

从Java 8 update 191或更高版本,或者Java 10、11、12、13等。我们有一个名为XX:+UseContainerSupport的选项,它在默认情况下被激活,因此JVM可以读取容器内RAM和CPU的限制。通过设置-XX:MaxRAMPercentage=90.0,我可以告诉JVM我想将多少百分比的可用RAM给予给HEAP,**但是other JVM resources呢?**比如GC、CodeCache、ClassLoading、元空间、DirectBuffers等等?
JVM是否也会调整它的大小(在分配堆后留下空间)以不超过可用的RAM?或者我仍然必须在每种情况下自己计算它,如下所示:

-XX:MetaspaceSize=64m -XX:ReservedCodeCacheSize=32m -XX:CompressedClassSpaceSize=16m -Xss256k

例如,如果创建一个具有1G RAM的容器,并在其中运行具有-XX:MaxRAMPercentage=90.0的JVM,那么HEAP将占用900m,而其他JVM内容将只有100m,这100m是否将在所有所需资源之间智能地分配,如设置XX:MaxMetaspaceSize(默认情况下无限制)?

guicsvcw

guicsvcw1#

这个问题的答案也引用了我的presentation,我在其中解释了JDK中所谓的“容器支持”只会影响

  • 默认堆大小
  • 可用CPU的数量

所以,答案是否定的:JVM不会调整其他内存区域的大小,也不会尝试以任何其他方式满足容器限制。您需要手动控制它们。

相关问题