两者的区别:
内存溢出 (out of memory) : 指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 (memory leak): 指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
打个比方说:
内存溢出就是:我向你借钱,你没这么多!我崩溃。
内存泄漏就是:我向你借钱,你有,我不还了,你忍了;我向你借钱,你有,我不还了,你忍了;。。。。;但总有一天,你终归忍无可忍,也会没钱。
简单的说:
内存溢出就是分配不能够。
内存溢出就是回收没能够。
两者的关系:
memory leak会最终会导致out of memory!