如何解决AWS Fargate Cluster - 在容器内运行的 java 进程可以消耗多少任务内存?
我正在 AWS Fargate 集群上运行一个 Java 应用程序,所需的任务计数为 1。我创建了一个具有 30GB 内存和 4 个 vCPU 的任务定义,并且在此任务中只定义了一个容器。我想在具有 30GB(-Xmx30G) 堆的容器内运行一个 java 进程,我的问题是我的 java 进程可以在容器内消耗所有任务内存还是有任何限制?
解决方法
就像@jordanm 所说的,并非 JVM 消耗的所有内存都用于堆内存。还有(取决于 JVM 版本)永久代或元空间内存,通俗地称为非堆。
本质上,您可能想要做的是测试您的应用在分配给堆和非堆的 30Gb 的不同比例下的行为。
这里有一个用一般术语描述内存调整的教程:https://www.baeldung.com/jvm-parameters