学习android内核 - 内存储器管理相关

学习android内核 -- 内存管理相关

Android内存管理:

1.当应用程序关闭以后,后台对应的进程并没有真正的退出(处于休眠状态,一般不占用系统CPU的资源),这是为了下次再启动的时候能快速启动。

2.当系统内存不够时,AmS会主动根据一定的优先规则退出优先级较低的进程。

a:潜规则:回收优先级为           前台Activity < 前台Service 或 Provider < 后台 activity < 空进程     (即前台Activity是最不容易被回收的)

b:与linux内核的内存管理模块配合: 系统内存情况(是否足够)主要是Linux内核的内存管理所控制的,AmS只是从中起到为应用程序情况分配一个oom_adj值(-16到15 ;值越高越容易被回收),然后告诉Linux内核中注册的oom killer去做回收处理(调用linux内部的进程管理方法)。              (如果不支持这种方式,则进行潜规则)

学习android内核 - 内存储器管理相关学习android内核 - 内存储器管理相关          

主要流程为:

 1.android中运行了一个叫oom的进程,他会在linux内存管理中注册(为oom Killer:用来回收应用进程)。

 2.当Llinux内存管理模块检测到系统内存不够的时候,他就会通知注册了的OOM进程,然后OOM进程就可以根据所定义的各种规则进行内存释放了。






-------------------------------------

内存回收释放的地点包含三个:

1.AmS中:当系统内存低时,会根据上述潜规则进行释放。

2.OOM Killer中:根据oom_adj值调用Linux内部的进程管理方法释放优先级较低的进程。(oom_adj越高,优先级越低

3.应用本身:当AmS认为目标进程需要被杀死时,首先会通知目标进程进行内存释放,包括调用目标进程的 scheduleLowMemory() 和 processInBackground() 方法