Android Studio 内存泄漏分析指南

最近在优化公司的项目,想针对内存泄漏进行分析一下,查阅网上的一些资料,发现苦逼的是,资料一大堆,但是内容都差不多,至今未找到一篇实战的内存泄漏分析,全部停留在理论知识上,最后查阅了一些外文文献,才有了一点思路,好吧!既然没有实战分析,我就做第一人,把我学到的分享出来,希望对你们有帮助,当然有说的不对的,望各位指出来~

内存泄漏原因

当应用不需要某对象时候,忘记释放分配的内存,该对象仍然保持被引用状态(当对象拥有强引用,GC无法回收),从而导致内存泄漏

泄漏的源头

泄漏的源头有很多,有开源的第三方框架引起的、android系统自身造成的如webview的内存泄漏,还有一个是我们可以控制的就是自身编码引起的内存泄漏,这也是我们可以避免的,一下情况容易出现内存泄漏

一、 Context 引起的内存泄漏

常见问题:

这个是最常见的,因为Activity经常要用到上下文Context,很有可能Activity作为Context传递给某些类,Activity生命周期结束之后,某些类仍然存活并保持着该Activity的引用,保持引用就无法被回收。从而导致内存泄漏

解决方案:

  1. 下次如果要传入context给某些类的时候,最好是用ApplicationContext,这样可以有效避免内存泄漏
  2. 在界面销毁的时候,手动释放掉引用过activity的context

二、Static 静态变量

常见问题:

我们有时候会为了方便,设置某个Activity或者View为静态变量,但是你要知道,static变量是要贯穿整个应该的生命周期,就是意味着即使Activity销毁,static变量也不会销毁,所以,如果你把View或者Activity设置为静态变量,这会导致当前的Activity会一直存在,从而导致内存泄漏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农掘金

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

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

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

打赏作者

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

抵扣说明:

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

余额充值