Android分析之LowMemoryKiller
来源:互联网 发布:嵌入式linux 自启动 编辑:程序博客网 时间:2024/05/16 17:56
转自:http://blog.csdn.net/pandarick/article/details/7719551
或者参考http://blog.chinaunix.net/uid-20321537-id-3228776.html
Android分析之LowMemoryKiller
Android Kernel 会定时执行一次检查,杀死一些进程,释放掉内存。
Low memory killer 则是定时进行检查。
Low memory killer 主要是通过进程的oom_adj 来判定进程的重要程度。这个值越小,程序越重要,被杀的可能性越低。
oom_adj的大小和进程的类型以及进程被调度的次序有关。
Low memory killer 的具体实现可参看:kernel/drivers/misc/lowmemorykiller.c
1.oom_adj的值是如何赋予的
进程的类型,可以在ActivityManagerService中清楚的看到:
其他未赋值的都在static块中进行了初始化,是通过system/rootdir/init.rc进行配置的:
在init.rc中:
# Define the oom_adj values for the classes of processes that can be
# killed by the kernel.
# Define the memory thresholds at which the above process classes will
# be killed.
配置文件有如下两个:
/sys/module/lowmemorykiller/parameters/adj
/sys/module/lowmemorykiller /parameters/minfree
owmeme_adj中各项数值代表阈值的警戒级数,
lowmem_minfree代表对应级数的剩余内存。
adj文件存放着oom_adj 内存警戒值( 以4K为单位)
0 1536
1 2048
2 4096
7 5120
14 5632
15 6144
也就是说,当系统的剩余内存为小于6MB时候,警戒级数为0,当系统内存剩余小于8M而大于
6M的时候,警戒级数为1,当内存小于64M大于16MB的时候,警戒级数为12.
对于某些小内存设备,我们可以调整对应的门限值,例如:
一般调整后三个值。
echo “1536,2048,4096,15360,17920,20480″>/sys/module/lowmemorykiller/parameters/minfree
原文作者:AndyTsui
原文链接:http://blog.csdn.net/AndyTsui/archive/2011/02/27/6210653.aspx
2.LMK的工作机制
3.tips
# Write value must be consistent with the above properties.
write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15
write /proc/sys/vm/overcommit_memory 1
write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,5120,5632,6144
class_start default
(3)dumpsys activity可以dump进程的信息,查看adj值(2)进程oom_adj同样可以进行设置,通过write /proc/<PID>/oom_adj
,在init.rc中,init进程的pid为1,omm_adj被配置为-16,永远不会被杀死。
# Set init its forked children's oom_adj.
write /proc/1/oom_adj -16
- Android分析之LowMemoryKiller
- Android分析之LowMemoryKiller
- Android分析之LowMemoryKiller
- Android分析之LowMemoryKiller
- Android lowmemorykiller 原理分析
- Android lowmemorykiller分析
- Android的lowmemorykiller演变分析
- Android学习之lowmemorykiller driver
- Android内存管理机制之LowMemoryKiller
- android java进程管理(八)之lowmemorykiller
- Android 进程回收之LowMemoryKiller原理篇
- LowMemoryKiller in Android
- android lowmemorykiller机制简介
- Android 7.0 LowMemoryKiller 初识
- android lowmemorykiller笔记
- Android 的lowmemorykiller机制
- lowmemorykiller
- Android 6.0的lowmemorykiller机制
- 查询规划(SQLite)
- verilog多文件工程设计方法
- socket选项一
- NEFU84五指山
- 男友约会闺蜜开房
- Android分析之LowMemoryKiller
- JAVA补强系列======可变参数
- 我不知道自己算不算一个虚荣的女人
- 剑指Offer之从尾到头打印链表
- I2C总线协议详解
- UVA 12083 - Guardian of Decency(二分图最大匹配)
- JavaScript多个数组的合并操作
- Listview的item选中时的背景色的变化
- RMAN备份filesperset用法