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排障之八)的主要内容,如果未能解决你的问题,请参考以下文章