android 内存泄漏详解
来源:互联网 发布:百度云盘网络异常1解决 编辑:程序博客网 时间:2024/06/05 09:02
内存泄漏 : 程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果(百科)。
常见内存泄漏及解决办法 :
1 . Context 引用不当
避免生命周期较长的对象引用生命周期较短的Context,如:Service的生命周期不依赖于Activity,所以启动Service可以通过ApplicationContext.
2 . 对Context的静态引用
每一个View都包含一个对Context的引用,如果保持一个对View的静态引用,当配置发生改变(如屏幕旋转),Activity将得不到回收。
3 . 结束服务
当不需要的时候即时的结束Service:如当使用完google地位服务后,应当调用googleApiClient.disconect()进行关闭。
4 . 资源回收
图片往往是导致OOM的主要原因,不用的资源应当及时回收。
5 . 注销广播
手动注册的广播,在适当的时候(如:Activity.onDestroy()时)及时注销。
6 . 无限循环动画未关闭,导致Activity无法被回收
7 . 匿名内名回调接口 ,导致Activity无法被回收
每次创建一个匿名类,它会持有一个对上层类的引用。所以尽量避免匿名内部类,并及时注销。
8 . 注册监听导致的Activity无法回收(观察模式)
当在Activity实现或者创建一个接口时,如果注册监听的对象的生命周期大于Activity的生命周期,会导致Activity无法及时回收。
alt1 : 及时注销接口
alt2 : 使用WeakReference
9 . 使用AsyncTask时,持有Activity(Fragment)的强引用,导致Activity无法被回收。
10 . 使用内名Runnable执行任务,在任务结束之前退出Activity,导致Activity无法被回收。
11 . 在Activity销毁时,取消Handler和Timer
使用 LeakCanary检测内存溢出,使用MAT分析内存使用情况。
- android 内存泄漏详解
- android 内存泄漏详解
- Android内存泄漏的各种原因详解
- android 内存泄漏分析过程详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- android 内存泄漏分析过程详解
- Android内存泄漏的各种原因详解
- Android内存泄漏的各种原因详解
- 内存泄漏详解
- 内存泄漏详解(2)
- Java内存泄漏详解
- JAVA 内存泄漏详解
- 绘制地图格网时,如何只显示度的数值
- Android 进程常驻(0)----MarsDaemon使用说明
- 【代码笔记】iOS-performSelectorOnMainThread
- 连续子数组的最大和(java版)
- opencv学习笔记-2,图像颜色空间转换
- android 内存泄漏详解
- java中byte转换int时为何与0xff进行与运算
- SpringMVC入门案例
- AES加密速度
- vtk 两点确定一条直线的可视化
- 机器学习:Python实现聚类算法(三)之总结
- android实现程序的后台运行 and 完全退出
- 【 LeetCode】79. Word Search
- caffe——模型训练数据的过程