NoActive 后台优化 oom_adj 分级 - 后台优先级管理
后台优化功能概述
NoActive 的后台优化功能利用已知的状态识别,正确识别后台应用的先后顺序,为每个应用设置不同的 oom_adj 值,实现精细化的后台优先级管理。
oom_adj 是什么
oom_adj 是 Linux 内核(Android)中每个进程的一个重要参数,它的值决定了进程被 Low Memory Killer (LMK) 杀死的优先级。
- oom_adj 值越小 → 优先级越高 → 越不容易被杀死
- oom_adj 值越大 → 优先级越低 → 越容易被杀死
优先级分级
NoActive 提供三级重要程度设置:
高优先级
主进程 oom_adj: 600 - 649
子进程 oom_adj: 650 - 699
中优先级
主进程 oom_adj: 700 - 749
子进程 oom_adj: 750 - 799
低优先级
主进程 oom_adj: 800 - 899
子进程 oom_adj: 900 - 999
白名单应用
白名单应用的 oom_adj 保持在系统设置值(主进程 500,子进程 700),属于最高优先级。
后台顺序影响 oom_adj
oom_adj 值不仅取决于你设置的重要程度,还会根据后台顺序微调。
示例场景
依次后台三个应用:C(低优先级)→ B(低优先级)→ A(高优先级)
此时:
- A 应用后台顺序第 1:主进程 oom_adj 600,子进程 650
- B 应用后台顺序第 2:主进程 oom_adj 700,子进程 750
- C 应用后台顺序第 3:主进程 oom_adj 700,子进程 751
LMK 杀死顺序
内存不足时,杀死顺序如下(从先到后):
C 应用子进程(751)
↓
B 应用子进程(750)
↓
C 应用主进程(700)
↓
B 应用主进程(700)
↓
A 应用子进程(650)
↓
A 应用主进程(600)
配置方法
在 UI 中设置
在应用的独立配置页面,可以选择重要程度(高/中/低)。
通过配置文件批量设置
在 MemConfig.json 中通过以下字段批量配置:
highPriorityUidSet:高优先级 UID 集合mediumPriorityUidSet:中优先级 UID 集合lowPriorityUidSet:低优先级 UID 集合
开启方法
后台优化需要在 MasterConfig.json 中将 backgroundOptimize 设为 true,重启生效。
与内存优化的关系
内存优化(自动清理低优先级应用)依赖后台优化。先开后台优化,内存优化才能正常工作。
实际效果
开启后台优化后,在可用内存紧张时:
- 高优先级应用(如浏览器、地图)更不容易被杀死
- 低优先级应用(如天气、新闻)优先被清理
- 再次切回高优先级应用时,不需要重新加载
→ 继续 内存自动清理