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所说的,只要这个变量没有其他的引用,系统就会在需要的时候回收。 大总结 要想解决一个问题 你先要知道这个问题到底是什么才能针对下手