Android性能——内存溢出(篇二:内存溢出的原因)

(一) 查询数据库没有关闭游标

(二) 构造Adapter时,没有使用缓存的 convertView

(三) Bitmap对象不在使用时调用recycle()释放内存

(四)当项目中包含大量图片,或者图片过大,可能会oom

(五) 释放对象的引用

第一:不要为Context长期保存引用(要引用Context就要使得引用对象和它本身的生命周期保持一致)。

第二:如果要使用到Context,尽量使用ApplicationContext去代替Context,因为ApplicationContext的生命周期较长,引用情况下不会造成内存泄露问题。

第三:在你不控制对象的生命周期的情况下避免在你的Activity中使用static变量,因为static是与程序的生命周期一样的。尽量使用WeakReference去代替一个static。

第四:垃圾回收器并不保证能准确回收内存,这样在使用自己需要的内容时,主要生命周期和及时释放掉不需要的对象。尽量在Activity的生命周期结束时,在onDestroy中把我们做引用的其他对象做释放,比如:cursor.close()。

五:匿名内部类/非静态内部类,持有对外部类(一般是Activity)的引用。如果有生命周期不一样的异步线程,那就要小心了,比如Handler。

六:监听器没有及时释放(context.registerReceiver(recevier,intentFilter);)

七:单例模式一般都是持续于整个生命周期的,那么持有外部的引用也会造成内存泄漏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值