计算机科学中,内存泄漏是一种资源泄漏。发生这种情况时,不再需要的内存未被释放,计算机程序以错误的方式管理内存分配。当对象存储在内存中但不能被运行代码无法访问时,也可能发生内存泄漏。内存泄漏的症状类似于许多其他问题,通常它只能由能够访问程序源代码的程序员来诊断。接下来和您详细说一下“什么是内存泄露和内存泄漏的原因及解决办法。”

 

一、什么是内存泄露

内存泄漏(存储渗漏)是用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,直到程序结束。内存泄漏是一种很难定位和跟踪的错误。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。

什么是内存泄露

二、内存泄漏的原因及解决办法

1、非静态内部类创建静态实例造成的内存泄漏
解决方法:将该内部类设为静态内部类或将该内部类抽取出来封装成一个单例,如果需要使用Context,就使用Application的Context。
2、Handler造成的内存泄漏
解决方法:将Handler类独立出来或者使用静态内部类,这样便可以避免内存泄漏。
3、线程造成的内存泄漏
解决方法:将AsyncTask和Runnable类独立出来或者使用静态内部类,这样便可以避免内存泄漏。
4、使用ListView时造成的内存泄漏
解决方法:在构造Adapter时,使用缓存的convertView。
5、集合容器中的内存泄露
解决方法:在退出程序之前,将集合里的东西clear,然后置为null,再退出程序。

内存泄漏的原因及解决办法