Android 内存泄漏的个人总结

Android系统对每一个App有个内存限制。也可以这样理解,是对每一个进程做了内存限制。也很好理解,毕竟是移动设备,内存小。必须合理的利用,以防止系统挂掉。

Java程序员很多考虑内存,最起码我是很少考虑。在做了Android以后发现。这样很不好。所以总结下Android下内存控制和释放。很多书上都有我也不记录了。总结下面几点:

在Activity里面少使用static 变量,尽量少的保存Context对象更加不要保存Activity。必须要保存的使用软引用保存。内部类劲量static。防止溢出。

线程问题的改进方式主要有:

  l 将线程的内部类,改为静态内部类。

  l 在程序中尽量采用弱引用保存Context。

  2. 万恶的bitmap。。。

  Bitmap是一个很万恶的对象,对于一个内存对象,如果该对象所占内存过大,在超出了系统的内存限制时候,内存泄露问题就很明显了。。

  解决bitmap主要是要解决在内存尽量不保存它或者使得采样率变小。在很多场合下,因为我们的图片像素很高,而对于手机屏幕尺寸来说我们并不用那么高像素比例的图片来加载时,我们就可以先把图片的采样率降低在做原来的UI操作。

  如果在我们不需要保存bitmap对象的引用时候,我们还可以用软引用来做替换。具体的实例代码google上面也有很多。

  综上所述,要避免内存泄露,主要要遵循以下几点:

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

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

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

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值