内存溢出(out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现内存溢出。比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。再比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。
内存泄露(memory leak),是指程序在申请内存后,使用完毕后没有释放已申请的内存空间。
内存泄露会最终会导致内存溢出!
从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。内存泄漏会因为减少可用内存的数量从而降低计算机的性能。最终,在最糟糕的情况下,过多的可用内存被分配掉导致全部或部分设备停止正常工作,或者应用程序崩溃。