第十七节:内存泄露排查优化实战
OutOfMemoryError
,也就是臭名昭著的 OOM(内存溢出),相信很多球友都遇到过,相对于常见的业务异常,如数组越界、空指针等,OOM 问题更难难定位和解决。
这篇内容就以之前碰到的一次线上内存溢出的定位、解决问题的方式展开;希望能对碰到类似问题的球友带来思路和帮助。
主要从表现-->排查-->定位-->解决
四个步骤来分析和解决问题。
内存溢出和内存泄露
在 Java 中,和内存相关的问题主要有两种,内存溢出和内存泄漏。
- 内存溢出(Out Of Memory) :就是申请内存时,JVM 没有足够的内存空间。通俗说法就是去蹲坑发现坑位满了。
- 内存泄露 (Memory Leak):就是申请了内存,但是没有释放,导致内存空间浪费。通俗说法就是有人占着茅坑不拉屎。
内存溢出
在 JVM 的内存区域中,除了程序计数器,其他的内存区域都有可能发生内存溢出。
真诚点赞 诚不我欺
回复