Android常见内存泄漏的原因
内存泄漏概念:内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 一、单例模式使用Activity作为Context 单例模式中应该避免使用Activity作为传入的Context,否则,单例模式会持有这个Activity的引用,导致它无法释放,造成内存泄漏。应该使用ApplicationContext作为Context传入。如果一定要使用Activity的话,要使用弱引用WeakReference。 二、未关闭资源或者没有反注册 BroadcastReceiver,File,Cursor,IO流等资源在 Activity 的onDestroy必须unregister 或者 close ,否则这个 Activity 类会被 system 强引用,不会被内存回收。关闭的语句必须在finally中进行关闭,否则有可能因为异常未关闭资源,致使activity泄漏。 三、Handler造成内存泄漏 只要 Handler 发送的 Message 尚未被处理,则该 Message 及发送它的 Handler 对象将被线程 MessageQueue 一直持有。特别是handler执行延迟任务。所以,Handler 的使用要尤为小心,否则将很容易导致内存泄露的发生。 public