Android面试之内存泄漏(自己理解,有不对之处希望大神们能够指出)

Android面试之内存泄漏

1.什么是内存泄漏

首先我们需要知到泄漏的内存是什么

泄漏的内存就是指不用了的内存,Android系统本身就有内存的回收机制,正常情况下,不用了的内存是会被系统正常回收的,但是因为小伙伴写的代码等原因就会导致不用了的内存得不到正常的回收,这就导致了内存的泄漏。

例如:ActivityA 里面有一个static变量A,并且里面有一个while循环,while里面引用了A ,现在用户退出了ActivityA,并没有结束while循环。在while还在循环的时间内,系统触发了回收机制,由于while循环引用了A对象,系统就会认为A还有作用,便不会回收A对象了。这个时候A对象占用的内存便是泄漏的内存。

总结:没有使用的内存如果还存并且无法正常回收在就是会发生泄漏的内存,内存泄漏多了就会导致崩溃等问题。

2.内存地址的引用(这个完全就是来自于灵魂深处的记忆了)

实际上,系统如果要回收内存就需要判断这部分内存还有没有引用。有关于这个引用,在我们创建一个变量A的时候,系统会创建一个内存空间,并生成一个内存地址,这个内存地址就被变量A持有,这个持有也就可以说成是引用,只要这个A一直持有这个内存的地址,系统便不能正常回收掉A指向的内存。
有关于内存地址这一说法,网上有很多,写的也都比较好懂,这里就不说了。

3.有关于 static

用static修饰的变量可以理解为能被回收的全局变量。根据1所说的,只要这个变量没有其他的引用,系统就会在需要的时候回收。

大总结 要想解决一个问题 你先要知道这个问题到底是什么才能针对下手

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值