Android性能调优——内存泄漏排查

本文介绍了Android应用中出现内存泄漏的问题,包括泄漏的现象、原因,如非静态内部类、静态View、Handler等常见泄漏案例。同时,讲解了强引用、软引用、弱引用和虚引用的区别,并推荐了leakcanary和MAT等排查工具,帮助开发者进行内存优化。
摘要由CSDN通过智能技术生成

背景

最近的项目总是遇到运行一个晚上后出现自动退出的问题,从日志分析是系统将应用进程杀掉了,由于ROM本身是我们基于Android7.1定制的,里面加了WatchDog,所以很有可能是由于应用某些异常导致整个系统卡死,从而引起了看门狗程序将应用杀掉,最有可能的原因就是应用程序内存的问题引起的【ROM本身放开了应用获取内存和存储空间的限制】,所以抽时间对整个应该进行了内存排查,发现了很多问题点,这里就列举其中遇到内存泄漏问题。

内存泄漏

现象

内存泄漏的现象就是经过某些操作或者程序运行一段时间后,整个应用程序占用的内存持续增加,并且GC无法回收这些分配出去的内存。

原因

内存泄漏的根本原因是由于引用关系处理不当导致的,当我们在写程序时,由于疏忽或者是对某些资源处理不当,造成了本应该被回收释放的资源没有得到正确的释放,从而造成我们的应用暂用的内存不断增加,最终程序变得卡顿,OOM,被系统杀死等。

常见引起内存泄漏的案例

  1. 非静态内部类、匿名内部类
  2. 静态的View
  3. Handler
  4. 监听器(各种需要注册的Listener,Watcher等)
  5. 资源对象没关闭造成内存泄漏
  6. 属性动画
  7. RxJava
  8. WebView
  9. 其他的系统控件以及自定义View

参考:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值