转载至:https://blog.csdn.net/qq_33556350/article/details/81411437
一、什么是内存溢出和内存泄漏
内存泄漏(memory leak):是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会对程序造成什么影响,但是如果在内存本身就比较少获取,多次内存泄漏将导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。
内存溢出(out of memory):指程序申请内存时,没有足够的内存供申请者使用,导致数据无法正常存储到内存中。当利用int类型大小的存储空间,去存储long类型的数据,这样就会导致内存溢出。
二、内存溢出和内存泄漏的关系以及区别
1.关系:内存泄漏最终会导致内存溢出,由于系统中的内存是有限的,如果过度占用资源而不及时释放,最后会导致内存不足,从而无法给所需要存储的数据提供足够的内存空间,从而导致内存溢出。导致内存溢出也可能是由于在给数据分配大小时没有根据实际要求分配,最后导致分配的内存无法满足数据的需求,从而导致内存溢出。
2.区别:内存泄漏是由于分配的内存空间没有及时回收,导致内存的浪费;内存溢出是由于数据所需要的内存无法得到满足,导致数据无法正常存储到内存中。内存泄漏多次容易导致内存溢出。