Android 内存相关

Linux OOMKiller

1. 进程消耗的内存
2. 进程占用CPU的时间
3. oom_adj(OOM权重/proc/PID/oom_adj)

根据以上因素,系统会实时给每个进程评分,已决定OOM时应该杀死哪些进程。oom_score分数越高被杀死的几率越大

Andriod Low Memory Killer

当内存小于6M时,Killer需要清理adj值为0的进程

lowmen_adj 描述 lowmen_minfree
0 当前正在前台运行的进程 6M
15 空进程
  • android:persistent

LargeHeap

/system/build.prop文件中记录了内存配置,AMS可以查看

  • ams.getMemoryClass(); // 正常情况下内存大小
  • ams.getLargeMemoryClass(); // 开启largeHeap最大内存
// 堆得初始大小
dalvik.vm.heapstartsize=8m
// 标准堆得最大大小
dalvik.vm.heapgrowthlimit=192m

// 使用largeHeap的最大大小
dalvik.vm.heapsize=512m

// 当前存活对象 / 堆大小
dalvik.vm.heaptargetutilization=0.75

// 单次堆内存调整最小值
dalvik.vm.heapminfree=512k
// 单次堆内存调整最大值
dalvik.vm.heapmaxfree=8m

你可能感兴趣的:(Android 内存相关)