OOM
先不考虑自己系统外部依赖的缓存、消息队列、数据库等等东西挂掉,就我们自己系统本身而言,最常见的挂掉的原因是什么?
其实就是系统OOM,也就是所谓的内存溢出!
其实说白了,也非常非常的简单,一句话形容,你的JVM内存就这么点,结果你拼命的往里面塞东西,结果内存塞不下了,不就直接溢出了吗?
看看下面的这个图
至于到底JVM是如何放不下对象导致内存溢出的,这个大家不要着急,情况有很多种,我们后面会一步一图一点点给大家分析的
此外我们还会结合一些案例用代码给大家演示出来发生内存溢出的一些场景,最后还会告诉大家平时对线上系统的内存溢出一般怎么来处理和解决。
一旦你的系统代码不停的往JVM内存里塞入大量的东西,JVM实在是放不下之后,JVM就会告诉你,OutOfMemory,内存溢出了,我实在放不下那么多东西了,我就直接瘫痪不能工作了。
通常而言,内存溢出这个问题可能对你的系统是毁灭性的打击,他代表你的JVM内存不足以支撑你的代码的运行
所以一旦发生这个情况,就会导致你的系统直接停止运转,甚至会导致你的JVM进程直接崩溃掉,进程都没