Android 的内存管理

转自: http://blog.sina.com.cn/s/blog_4d66a3cb0100prfe.html

在init.rc中 系统定义了

Lowmeme_adj中各项数值代表阈值的警戒级数,lowmem_minfree代表对应级数的剩余内存





当系统的剩余内存为小于6MB时候,警戒级数为0,当系统内存剩余小于8M而大于6M的时候,警戒级数为1,当内存小于64M大于16MB的时候,警戒级数为12.Low memory killer 的规则就是根据当前系统的剩余内存多少来获取当前的警戒级数,如果进程的oom_adj大于警戒级数并且最大,进程将会被杀死(相同omm_adj的,则杀死占用内存较多的)。Omm_adj越小,代表进程越重要。一些前台的进程,oom_adj会比较小,而后台的服务,omm_adj会比较大,所以当内存不足的时候,Low memory killer 杀掉的必然先杀掉的是后台服务而不是前台的进程。






# Define the oom_adj values for the classes of processes that can be

# killed by the kernel.  These are used in ActivityManagerService.

    setprop ro.FOREGROUND_APP_ADJ 0

    setprop ro.VISIBLE_APP_ADJ 1

    setprop ro.PERCEPTIBLE_APP_ADJ 2

    setprop ro.HEAVY_WEIGHT_APP_ADJ 3

    setprop ro.SECONDARY_SERVER_ADJ 4

    setprop ro.BACKUP_APP_ADJ 5

    setprop ro.HOME_APP_ADJ 6

    setprop ro.HIDDEN_APP_MIN_ADJ 7

    setprop ro.EMPTY_APP_ADJ 15



# Define the memory thresholds at which the above process classes will

# be killed.  These numbers are in pages (4k).

    setprop ro.FOREGROUND_APP_MEM 2048

    setprop ro.VISIBLE_APP_MEM 3072

    setprop ro.PERCEPTIBLE_APP_MEM 4096

    setprop ro.HEAVY_WEIGHT_APP_MEM 4096

    setprop ro.SECONDARY_SERVER_MEM 6144

    setprop ro.BACKUP_APP_MEM 6144

    setprop ro.HOME_APP_MEM 6144

    setprop ro.HIDDEN_APP_MEM 7168

    setprop ro.EMPTY_APP_MEM 8192

你可能感兴趣的:(android)