am_mem_factor
am_mem_factor 是 Android 系统内存管理模块(ActivityManagerService) 输出的 内存状态等级(memory factor) 日志。
比如:am_mem_factor: [1,3]
| 字段 | 含义 |
|---|---|
am_mem_factor | 表示系统当前内存压力等级的状态。 |
[1,3] | 两个整数值,分别表示: [prev, current],即 之前的内存等级 → 当前的内存等级。 |
内存等级定义
| 等级值 | 含义 |
|---|---|
| 0 | MEMORY_FACTOR_NORMAL – 内存充足 |
| 1 | MEMORY_FACTOR_MODERATE – 内存轻度紧张 |
| 2 | MEMORY_FACTOR_LOW – 内存中度紧张 |
| 3 | MEMORY_FACTOR_CRITICAL – 内存极度紧张 |
表示系统内存状态从 轻度紧张(1) 恶化到了 极度紧张(3) ,触发了更激进的内存回收策略(如杀后台、限制服务等)
- 如果你看到
[1,3]或[2,3]频繁出现,说明系统内存压力正在快速上升。 - 建议结合
am_low_memory、am_proc_died、killinfo等日志一起分析,确认是否有大量进程被杀。
killinfo: [9790,10025,500,201,...]
killinfo 是 内核层 lowmemorykiller(LMK) 杀进程时留下的 killinfo 日志,非常详细,可以看作是 “死亡报告” 。
killinfo: [9790,10025,500,201,68552,3,19112,710892,31896,928,10468,96192,1668700,182736,280604,280240,277920,328092,542628,70192,203048,45424,62080,0,0,0,6024,444,12,37,0,24224,418712,12,12,23.139999,5.810000,8.730000,1.450000,61.099998]
字段解释
| 索引 | 值 | 含义 |
|---|---|---|
| 0 | 9790 | 被杀进程的 PID |
| 1 | 10025 | 被杀进程的 UID |
| 2 | 500 | oom_score_adj(越高越容易被杀) |
| 3 | 201 | 杀进程的原因码(通常是 LMK_PROCNOSPACE 或类似) |
| 4 | 68552 | 进程总内存(KB) |
| 5 | 3 | 杀进程的策略(通常是 CACHED 或 SERVICE) |
| 6 | 19112 | 进程匿名内存(KB) |
| 7 | 710892 | 进程总 RSS(KB) |
| 8 | 31896 | 进程共享内存(KB) |
| 9 | 928 | 进程私有干净内存(KB) |
| 10 | 10468 | 进程私有脏内存(KB) |
| 11 | 96192 | 进程共享干净内存(KB) |
| 12 | 1668700 | 系统总内存(KB) |
| 13~18 | 182736...328092 | 各类型内存使用(缓存、匿名、共享等) |
| 19~22 | 70192...62080 | GPU、DMA、ION 等内存 |
| 23~24 | 0,0 | 保留字段 |
| 25 | 6024 | 杀进程时系统可用内存(KB) |
| 26 | 444 | 杀进程时系统缓存内存(KB) |
| 27 | 12 | 杀进程时系统匿名内存(KB) |
| 28 | 37 | 杀进程时系统共享内存(KB) |
| 29 | 0 | 保留 |
| 30 | 24224 | 杀进程时系统 ION 内存(KB) |
| 31 | 418712 | 杀进程时系统 GPU 内存(KB) |
| 32 | 12 | 杀进程时系统 DMA 内存(KB) |
| 33 | 12 | 杀进程时系统 DMA32 内存(KB) |
| 34~37 | 23.13...61.09 | 各类内存使用百分比(匿名、缓存、共享、GPU) |
系统在 17:54:51 由 LMK 杀掉了 com.sprd.providers.photos(PID 9790) ,因为它内存占用 68MB,oom_score_adj 为 500(可杀) ,而当时系统可用内存仅剩 6MB,处于 极度紧张状态
建议:
- 这条日志说明系统内存已非常紧张(可用仅 6MB),连 系统服务(如照片提供器) 都被杀了。
- 建议优化系统内存配置,或排查是否有内存泄漏/常驻进程过多。
AMS 杀进程时的真实排序(Android 13 为例
| ADJ | 值越小越难杀 |
|---|---|
| -900 | SYSTEM (system_server) |
| -800 | PERSISTENT (persistent 应用) |
| -700 | PERSISTENT_UI |
| -600 | TOP_APP (当前 Resume 的 Activity) |
| 200 | PERCEPTIBLE (前台服务、通知) |
| 400 | CACHED (空进程) |
android.intent.category.HOME 只是把应用标记为 “桌面候选” ,让系统在按 Home 键时把它列入选择列表;
它并不会给进程带来任何杀不死的特权