1.概述
本章我们主要讲解如何定位线上的OOM的问题。
2.OOM原因
OOM的原因有很多种,下面举几个列子。
2.1 一次申请对象过多
比如你查询数据库数据,几千万的数据一次查询完毕,然后都放在内存,然后当然会导致OOM了。
解决: 可以分页查询
2.2 内存耗尽-未释放
比如我们使用数据库连接池,然后每次都开启新的链接,但是就是不释放,然后导致内存耗尽。
我们可以引入池化思想
。比如连接池,缓冲区buffer池。
缓冲区buffer池最多的是使用 Netty。
2.3 资源给的太少
给与应用的资源本身就少,我们可以使用jps呀,或者
jmpa -heap 堆栈信息
这个打印的信息比较详细
2.4 大对象直接进入老年代
大对象导致内存释放较慢,内存累积然后溢出。
首先参考文
标签:Java,OOM,然后,buffer,线上,缓冲区,连接池,内存 From: https://blog.csdn.net/qq_21383435/article/details/131360728