Android 开发中的内存泄漏
什么是内存泄漏
定义
程序中动态分配的内存因为某种原因未释放或无法释放
通俗的讲,就是一个长生命周期对象 A 持有了一个短生命周期 B 对象的引用,导致 B 销毁时无法被 GC 回收,造成的内存浪费。
危害
- 用户对单次的内存泄漏并没有什么感知,但是当泄漏积累到内存都被消耗完,就会导致卡顿,甚至崩溃;
- gc回收频繁 造成应用卡顿ANR:
- 当内存不足的时候,gc会主动回收没用的内存.但是,内存回收也是需要时间的.- 内存回收和gc回收垃圾资源之间高频率交替的执行.就会产生内存抖动.
- 很多数据就会污染内存堆,马上就会有许多GCs启动,由于这一额外的内存压力,也会产生突然增加的运算造成卡顿现象,
- 任何线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行,所以垃圾回收运行的次数越少,对性能的影响就越少;
