内存溢出(out of memory):
程序在申请内存时,申请的内存不足以存相应的值。比如:声明一个Integer的变量,存一个Long类型才能存下的数值,就发生了内存溢出。
内存泄漏(memory leak):
程序申请的内存,无法被释放,最终导致内存资源耗尽。
内存泄漏说明程序逻辑有问题,最简单的例子就是死循环。
在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾回收器(GabageCollection, GC)完成的,它只能回收不在被其它对象引用的那些对象所占的空间。