|
关键词:
android,linux内核,android基础教程,androidweb应用,android2高级编程,android内核剖析,android应用开发揭秘,深入理解android,精通android游戏开发,Android应用开发,Android手机开发
文档简介:
第十四章Android内核驱动——内存管理14.1LowMemoryKiller基本原理Android的LowMemoryKiller是在标准linuxkernel的OOM基础上修改而来的一种内存管理机制,当系统内存不足时,杀死Bad进程释放其内存。Bad进程的选择标准有两个:oomadj和占用内存的大小。oomadj代表进程的优先级,数值越大,优先级越高,对应每个oomadj都有一个空闲内存的阈值。AndroidKernel每隔一段时间会检查当前空闲内存是否低于某个阈值,如果是,则杀死oomadj最大的Bad进程,如果有两个以上Bad进程oomadj相同,则杀死其中占用内存最多的进程。LowMemoryKiller与OOM的区别OOM即OutofMemory是标准linuxKernel的一种内存管理机制,LowMemoryKiller在它基础上作了改进:OOM基于多个标准给每个进程打分,分最高的进程将被杀死;LowMemoryKiller则用oomadj和占用内存的大小来选择Bad进程OOM在内存分配不足时调用,而LowMemoryKiller每隔一段时间就会检查,一旦发现空闲内存低于某个阈值,则杀死Bad进程。LowMemoryKiller的实现LowMemoryKiller的源代码在drivers/staging/android/lowmemorykiller.c中,它是通过注册CacheShrinker来实现的。CacheShrinker是标准linuxkernel回收内存页面的一种机制,它由内核线程kswapd监控,当空闲内存页面不足时,kswapd会调用注册的Shrinker回调函数,来回收内存页面。LowMemoryKiller是在模块初始化时注册CacheShrinker的,代码如下:staticintinitlowmeminit(void){registershrinker(&l......。
【文件名】:13221@52RD_Android内核驱动—-内存管理_1345772063359.pdf
【格 式】:pdf
【大 小】:590K
【简 介】:
【目 录】:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|