Android内存泄漏8种可能及完善解决方案

借鉴自https://www.jianshu.com/p/ac00e370f83d一般内存泄漏(traditional memory leak)的原因是:由忘记释放分配的内存导致的。(译者注:Cursor忘记关闭等)逻辑内存泄漏(logical memory leak)的原因是:当应用不再需要这个对象,当仍未释放该对象的所有引用。如果持有对象的强引用,垃圾回收器是无
摘要由CSDN通过智能技术生成

借鉴自https://www.jianshu.com/p/ac00e370f83d


一般内存泄漏(traditional memory leak)的原因是:由忘记释放分配的内存导致的。(Cursor忘记关闭等)
逻辑内存泄漏(logical memory leak)的原因是:当应用不再需要这个对象,当仍未释放该对象的所有引用。


如果持有对象的引用,垃圾回收器是无法回收这个对象的。但是并不是说,引用被别人持有了,就是内存泄漏了。比如activity,你在用,那就不叫内存的泄漏,内存该花还是得花。但是当用户跳转到别的activity了,销毁了之前的activity,这个时候,如果之前那个activity的资源还没有被释放这就说不过去了。最典型的原因是之前的activity的实例依然被另外的对象持有着。有些显示的引用还好说,隐式的如内部类的引用,可就真的难以查出来了。


最典型的,静态activity

private Activity activity = null;
public void setActivity(Activity activity) {
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值