内存泄漏:一般指堆内存的泄露,指的是一块内存存储后,没有被及时的回收,若内存不释放,这块内存就不能被使用,即内存的泄露。
包含:
常发性内存泄漏:发生内存泄漏的代码多次执行到,每一次执行都会发生一次内存泄露
偶发性内存泄漏:在某些特定情况下发生
一次性内存泄漏:只执行一次,由于算法的缺陷,导致有一块且仅有一块内存泄漏
隐式内存泄漏:程序在运行时,不停的分配内存,直到结束时才释放,一个服务器运行几天几个月,对于内存的堆积,造成内存的泄露。
防止:
对于不再需要使用的对象,显示的将其赋值为null
保持对对象生命周期的敏感,特别注意单例、静态对象、全局性集合等的生命周期。
内存溢出:程序要求的内存超过了系统所能分配的范围。
防止:
不要一次获取全部数据,采用分页查询的方式
检查代码是否有递归死循环的调用
检查是否有大量新的产生实体对象
检查LIst map,使用未清除的问题,list map集合对象始终有对象的引用,使得对象不能Gc回收