Android基础(29)内存泄漏
1)oom是什么?
2)什么情况导致oom?
3)有什么解决方法可以避免OOM?
4)Oom 是否可以try catch?为什么?
5)内存泄漏是什么?
6)什么情况导致内存泄漏?
7)如何防止线程的内存泄漏?
8)内存泄露场的解决方法
9)内存泄漏和内存溢出区别?
10)用IDE如何分析内存泄漏?
11)ANR产生的原因是什么?
12)ANR定位和修正
13)广播引起anr的时间限制是多少?
即 ML (Memory Leak)
指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象。
从机制上的角度来说:
出现内存泄露的原因是 无意识地持有对象引用,使得 持有引用者的生命周期 > 被引用者的生命周期
a. 内存分配策略
由 ActivityManagerService 集中管理 所有进程的内存分配
b. 内存回收策略
a. 内存分配策略
用1个实例讲解 内存分配
b. 内存释放策略
静态成员变量有个非常典型的例子 = 单例模式
解决方案
单例模式引用的对象的生命周期 = 应用的生命周期
多线程:AsyncTask、实现Runnable接口、继承Thread类
Handler弱引用方式