提问人:Eugen Gerb 提问时间:11/16/2023 最后编辑:Eugen Gerb 更新时间:11/16/2023 访问量:48
Kubernetes Pod 上 Java 17 应用程序的非堆中的最大内存过多
Excessive Max Memory in Non-Heap for Java 17 App on Kubernetes Pod
问:
我有一个在容器中运行 Java 17 应用程序的 Kubernetes Pod。Pod 配置了 2GB 请求和有限的内存。
对于 Java 17 应用程序,我设置了标志 -XX:MaxRAMPercentage=50,并且默认启用 -XX:+UseContainerSupport 标志。
我使用 Prometheus 收集了 JVM 内存指标(已用、最大和已提交),我注意到非堆内存似乎具有异常高的最大值。
下面是所选 Pod 的 JVM Memory Grafana 图表的屏幕截图:
我知道除了 Java 堆之外,非堆(例如,元空间)也发挥了作用,并且似乎是罪魁祸首。但是,我很困惑为什么非堆最大内存如此之高。
我的具体问题是:
普罗米修斯如何计算jvm_memory_max_bytes?
如何确定非堆的额外最大 JVM 内存来自何处?
感谢您的任何见解或指导!
我尝试对 -XX:MaxRAMPercentage 标志使用不同的值。
我无法使用 jmap 或 jcmd 等工具,因为图像是 JRE。
JProfiler 适合帮助我解决这个问题吗?
答: 暂无答案
评论