gpt4 book ai didi

java - jvm运行垃圾收集时Kubernetes Pod内存使用率不下降

转载 作者:行者123 更新时间:2023-11-30 01:56:36 30 4
gpt4 key购买 nike

我很难理解为什么我的 Java 应用程序会慢慢消耗 Pod 可用的所有内存,导致 Kubernetes 将 Pod 标记为内存不足。 JVM (OpenJDK 8) 使用以下参数启动:

-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2

我正在监视 Pod 使用的内存以及 JVM 内存,并希望看到一些相关性,例如在主要垃圾收集之后,使用的 Pod 内存也会下降。但是我没有看到这一点。我在下面附上了一些图表:

Pod 内存: enter image description hereJVM 总内存 enter image description hereJVM 的详分割解(抱歉所有颜色看起来都一样......感谢 Kibana) enter image description here

我正在努力解决的是,为什么当 16:00 之前堆内存显着减少时,Pod 内存不会也下降?

最佳答案

看起来您正在创建一个资源限制为 1GB 内存的 Pod。您正在设置-XX:MaxRAMFraction=2这意味着您将 50% 的可用内存分配给 JVM,这似乎与您绘制的 Memory Limit 相匹配。 .

JVM 然后保留您在 Memory Consumed 中绘制的内容的大约 80% .

当您查看Memory Consumed时您不会看到内部垃圾回收(如第二张图中所示),因为 GC 内存已释放回 JVM,但仍由 JVM 保留。

您的java应用程序是否可能存在内存泄漏?随着时间的推移,它可能会导致保留更多内存,直到达到 JVM 限制(512MB)并且您的 pod 被 OOM 杀死。

关于java - jvm运行垃圾收集时Kubernetes Pod内存使用率不下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54279068/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com