androi开发中,如何避免内存泄露

 

在做android开发时,稍不注意,就会出现内存泄露问题,主要原因是因为我们无意间保留了大量却永远不再使用的对象引用。为了避免内存泄露,要注意一下事项
  1.及时释放不再使用对象的引用 ,eg:obj=null;
    2.Bitmap对象不在使用时调用recycle()释放内存
    3. 查询数据库后关闭游标
    4.在onPause中Remove 所有的SendMesseges发出的消息。不然容易造成Activity泄露
  5.在onPause时,将显示ProgressDialog dissmiss掉,在需要时,在onResume时重新show,不然在onPause期间,系统会隐藏ProgressDialog消息,而app没有收   到,ProgressDialog将永远不会消失了。
  6.不要对Context,Activity拥有较长时间的引用,否则也会造成与Context相关的内存泄露,使用Application这种Context类型,这种Context拥有和应用程序一样长的生命周期,并且不依赖Activity的生命周期。如果你打算保存一个长时间的对象,并且其需要一个Context,记得使用Application对象。你可以通过调用Context.getApplicationContext()或Activity.getApplication()轻松得到Application对象。
7   使用静态弱引用,内部类和它们对外部类的隐式引用也是很危险的,如果你不想控制内部类的生命周期,应避免在Activity中使用非静态的内部类,而应该使用静态的内部类,并在其中创建一个对Activity的弱引用WeakReference,如同ViewRoot和它的Winner类那样

8.长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景,eg:集合类对普通对象的引用

9.构造Adapter时,使用缓存的 convertView
10.对于多线程的处理,如果并发的线程很多,同时有频繁的创建和释放,可以通过concurrent类的线程池解决线程创建的效率瓶颈。

11.Android为每个程序分配的对内存可以通过Runtime类的totalMemory() freeMemory() 两个方法获取VM的一些内存信息,对于系统heap内存获取,可以通过Dalvik.VMRuntime类的getMinimumHeapSize() 方法获取最小可用堆内存,同时显示释放软引用可以调用该类的gcSoftReferences() 方法,获取更多的运行内存。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸福在路上wellbeing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值