Amazon web services AWS Fargate集群—容器内运行的java进程可以消耗多少任务内存?

Amazon web services AWS Fargate集群—容器内运行的java进程可以消耗多少任务内存?,amazon-web-services,amazon-ecs,aws-fargate,Amazon Web Services,Amazon Ecs,Aws Fargate,我正在AWS Fargate集群上运行一个java应用程序,所需的任务计数为1。我创建了一个具有30GB内存和4个vCPU的任务定义,该任务中只定义了一个容器。我想在具有30GB(-Xmx30G)堆的容器内运行java进程,我的问题是,我的java进程是否可以在容器内消耗所有任务内存,或者是否存在任何限制?就像@jordanm所说的,JVM消耗的内存并不是全部用于堆内存。还有(取决于JVM版本)PermGen或Metaspace内存,通俗地称为非堆 本质上,您可能想做的是测试应用程序在为堆和非堆

我正在AWS Fargate集群上运行一个java应用程序,所需的任务计数为1。我创建了一个具有30GB内存和4个vCPU的任务定义,该任务中只定义了一个容器。我想在具有30GB(-Xmx30G)堆的容器内运行java进程,我的问题是,我的java进程是否可以在容器内消耗所有任务内存,或者是否存在任何限制?

就像@jordanm所说的,JVM消耗的内存并不是全部用于堆内存。还有(取决于JVM版本)PermGen或Metaspace内存,通俗地称为非堆

本质上,您可能想做的是测试应用程序在为堆和非堆分配不同比例的30Gb时的行为


下面是一个教程,它从一般意义上描述了内存优化:

您的进程可以使用所有分配的内存,但并非所有java的内存使用都是堆。不建议将超过80-90%的可用内存分配给堆。