一、OOM含义

OOM,全称“Out Of Memory”,意思是“内存用完了”。它来源于java.lang.OutOfMemoryError

二、为什么会出现java.lang.OutOfMemoryError:即OOM

官方介绍为当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,
就会抛出 java.lang.OutOfMemoryError :(注意:这是个很严重的问题,因为这个问题已经严重到不足以被应用处理)。

具体原因大致为两方面:

自身原因:比如虚拟机本身可使用的内存太少。

外在原因:如应用使用的太多,且用完没释放,浪费了内存。此时就会造成内存泄露

内存泄露

申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,
因为申请者不用了,而又不能被虚拟机分配给别人用。

内存溢出

申请的内存超出了JVM能提供的内存大小,此时称之为溢出。