gpt4 book ai didi

java - 如果 java 堆内存限制与 kubernetes 中的 pod 资源限制不同,会发生什么情况?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:00:51 25 4
gpt4 key购买 nike

我在具有以下配置的 pod 中运行 spring boot。

Pod 限制:

resources:
limits:
cpu: "1"
memory: 2500Mi
requests:
cpu: "1"
memory: 2500Mi

命令参数:

spec:
containers:
- args:
- -c
- ln -sf /dev/stdout /var/log/access.log;java -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -Djava.security.egd=file:/dev/./urandom
-Xms1600m -Xmx1600m -XX:NewSize=420m -XX............
  1. 如果 java 进程达到其最大堆限制(即 1600m (Xmx1600m))会发生什么
  2. 如果 Xmx 对 pod 内的 java 进程没有影响,它可以上升到 pod 限制(即内存:限制部分的 2500Mi)
  3. 如果以上配置正确,那么我们就浪费了 900Mi 内存吧 (2500-1600=900)

最佳答案

-Xmx 标志仅控制 Java 堆内存,这是运行代码时可用于您自己的 Java 对象的空间。如果用完了,JVM 会做垃圾回收来腾出空间。如果仍然用完,则会抛出 OutOfMemoryException。

Java JVM 还在内部使用一堆其他内存用于加载类、JIT 编译等...因此您需要在 Kubernetes 中允许更多的内存,而不仅仅是 -Xmx 值。如果超过 Kubernetes 限制值,那么 Java 可能会崩溃。

您在上面发布的配置看起来不错。通常我会在不受限制地运行一段时间后通过查看 Kubernetes 内存使用图来找到这些值。

关于java - 如果 java 堆内存限制与 kubernetes 中的 pod 资源限制不同,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52841367/

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