【问题标题】:AWS Fargate Cluster - How much task memory can be consumed by java process running inside the container?AWS Fargate 集群 - 容器内运行的 java 进程可以消耗多少任务内存?
【发布时间】:2021-04-01 08:08:11
【问题描述】:

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

【问题讨论】:

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

标签: amazon-web-services amazon-ecs aws-fargate


【解决方案1】:

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

基本上,您可能想要做的是测试您的应用在分配给堆和非堆的 30Gb 的不同比例下的行为。

这是一个概括性地描述内存调整的教程:https://www.baeldung.com/jvm-parameters

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2022-07-02
    • 1970-01-01
    • 2021-11-29
    • 2020-02-18
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多