1、对比Windows内存
Linux:充分利用内存,将一些程序调用过的硬盘数据读入内存,提升访问性能。
Window:需要内存时,才为程序分配。
2、android内存意义
有自身的调度策略。
3、android 进程种类
前台进程:目前在屏幕上显示的进程
可见进程:不在前台,但用户可见。(widget,输入法)
桌面进程:launcher
次要服务:service有在运行
后台进程:前台进程按home键后,变为后台进程
内容提供者(content provider)
空进程:没有任何在内运行的进程
home键:使进程从前台进程变为后台进程
back键:使进程从前台进程变成空进程
4、LMK(Low Memory Killer)
执行条件:剩余内存小于应用定义的APP_MEM值时,开始查看adj值列表,kill相应程序。
判断系统是否需要lmk-》找出oom_adj大于min_adj的占用内存最大的进程-》发送SIGKILL信息,杀掉该进程
常用内存回收算法:
1、引用计数回收法(Reference Counting):创建一个新对象,或其他指针指向该对象,引用计数累加一次,移除则递减一次。当引用计数降为0时,删除对象并回收内存。
2、标注并清理(Mark and Sweep GC)
3、拷贝(Copying GC)
4、逐代回收(Generational GC)
Android系统采用的是标注并删除和拷贝GC