Java大量文件处理场景堆外内存溢出(线上JVM排障之八)

Posted 深度Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java大量文件处理场景堆外内存溢出(线上JVM排障之八)相关的知识,希望对你有一定的参考价值。

背景:线上一个项目线上3节点POD,内存一点点爬升最后100%打满,然后就会触发K8s的驱逐机制,重启。然后内存又是一点点的爬升周而复始,系统完全不可用。

先看线上系统POD上的内存CPU使用情形,如下图所示:

 线上内存几乎打满,这个时候使用jmap会触发内存回收。

下面是容器里的内存信息:

 从图中可见Java占的内存已经是6.0G。

下面来看Java的堆内存,元空间和堆外内存信息,我们需要算清楚java内存。

 Java内存=4.8G堆内存+0.4G元空间+0.73G非堆内存=6.0G内存

但是后来java 内存增加到6.9G,为了解决问题先我们先dump下测试环境的内存:

# jmap -dump:format=b,file=./heap202200901955.hprof 7

以上是关于Java大量文件处理场景堆外内存溢出(线上JVM排障之八)的主要内容,如果未能解决你的问题,请参考以下文章

利用阿里云ARMS排查Java大量文件处理场景堆外内存溢出(线上JVM排障之八)

java内存溢出的问题如何排查

java内存溢出怎么解决?

HBase实战 | 排查HBase堆外内存溢出

实战JAVA虚拟机 JVM故障诊断与性能优化

JVM 线上故障排查基本操作--内容问题排查