内存泄露的一些方案
来源:互联网 发布:windows密钥能用几次 编辑:程序博客网 时间:2024/05/18 04:01
所有做Android开发的同学应该都遇到过内存泄露的问题。
我们现在在做的是一个广告的sdk,主要做的是海外市场的,但是我们的用户主要是国内的开发者。这些开发者,因为规模不一样,对内存泄露的容忍程度也不一样。
最近遇到几个比较大的开发者,对内存泄露问题非常在意。我们在这个上面已经花费了2个工作日的时间去处理。
在今天发现一个比较容易忽略的问题。
因为我们是广告sdk,广告中一般都会带有图片而这些图片也就成了bitmap。然后就有可能导致资源无法回收。
之前的时候,我的做法是,先遍历存放bitmap的集合,同时释放bitmap,然后再释放整个view资源。
可是监测后还是会有内存泄露,并不能保证内存及时的释放。
后来请教了开发者的工程师之后,才意识到可能是我们的释放顺序不对。
应该要 先释放视图,并将图片和imgageview解绑。然后清空view。最后再回收存放bitmap和存放他的集合。
另外有一个比较好的处理imageview造成的内存泄露的方法。
private void nullViewDrawablesRecursive(View view) { if (view != null) { if (view instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) view; int childCount = viewGroup.getChildCount(); nullViewDrawable(view); for (int index = 0; index < childCount; index++) { View child = viewGroup.getChildAt(index); nullViewDrawablesRecursive(child); } } else { nullViewDrawable(view); } }}private void nullViewDrawable(View view) { if (null != view) { view.setBackgroundDrawable(null); if (view instanceof ImageView) { ImageView imageView = (ImageView) view; imageView.setImageDrawable(null); imageView.setBackgroundDrawable(null); } view.destroyDrawingCache(); view.setLayerType(View.LAYER_TYPE_NONE, null); view.setVisibility(View.GONE); }}
0 0
- 内存泄露的一些方案
- 一些常见的内存泄露
- 关于opencv内存泄露的一些记录
- 有关内存泄露检测的一些知识。
- 防止内存泄露的一些Tips
- 检测内存泄露方案实现
- Android内存泄露方案管理
- java内存泄露分析方案
- Linux下检查代码内存泄露的几种方案
- Silverlight - 已知的一些bug (内存泄露)和解决办法
- 游戏开发中预防内存泄露的一些措施
- AS3.0 一些有关内存泄露的问题
- c++ 导致内存泄露的一些小问题与解决方法
- 游戏开发中内存泄露的一些防范措施
- 防止Java内存泄露的一些小细节
- java(Android)——内存泄露的一些经典案例
- 关于Android系统级内存泄露的一些坑
- iOS开发 一些常见的内存泄露和崩溃
- 用栈来求解老鼠迷宫问题
- AD中PCB布局技巧(经验)
- C++ MFC 改变控件大小和位置
- C语言中可能忽略的“注释”
- jQuery基础三事件处理
- 内存泄露的一些方案
- ffmpeg转码和转文件总结(MP3-->aac)
- 电脑经验 win7显示文件的扩展名
- ubuntu下git使用ssh连接github
- JavaScript语法、关键字、变量
- 22.客户端识别与 cookie 机制
- ubuntu 安装openblas,从而安装Theano
- java编程思想读书笔记 第九章 接口
- 桥接模式(别名Handle/Body)、与接口、抽象接口