进程级内存占用与 OOM — 谁在独占大内存
PSS vs RSS — 为什么 TaskManager 用 PSS
一个应用的内存不是全部独占的。比如微信和 QQ 都用了 Android Runtime (ART) 虚拟机的共享库,这份内存被两个进程共享。
- RSS(Resident Set Size):把共享库的内存全算给每个进程——微信显示 400 MB,QQ 也显示 400 MB,但其中 200 MB 是共享的,总共物理内存才 600 MB
- PSS(Proportional Set Size):共享内存按比例分摊——微信的 PSS 可能是 300 MB,QQ 是 250 MB,加起来更接近真实的物理占用
TaskManager 的进程详情和 RAM 面板用的是 PSS,比 RSS 更能反映一个应用独占的内存成本。
进程详情里的内存字段
点开任意进程的详情页,你会看到和内存相关的几个条目:
| 字段 | 含义 |
|---|---|
| Memory (PSS) | 该进程的 PSS 值,TaskManager 用这个排序 |
| Memory (RSS) | 该进程的 RSS 值,包含全部共享内存 |
| Threads | 进程的线程数,线程泄漏会导致线程数异常高 |
| Priority (Nice) | 调度优先级,默认 0,数字越小优先级越高 |
什么是 OOM Killer
OOM(Out Of Memory)Killer 是 Linux 内核的内存保护机制。当系统物理内存真的用光了,内核会选择一个进程杀掉来释放内存。
TaskManager 本身不直接告诉你 OOM Killer 有没有杀过进程,但你可以通过 RAM 面板的两个迹象间接判断:
迹象一:可用内存持续低于 10%
当可用内存长时间低于总内存的 10%(比如 12GB 手机可用不到 1.2GB),OOM Killer 随时可能被触发。这时你的手机会表现为:切应用要重新加载、后台频繁被杀、收到系统通知「内存不足」。
迹象二:Swap 使用量持续升高
系统开始疯狂往 Swap 里压缩内存,说明物理内存真的顶不住了。Swap 用得越多,手机会越卡(因为读压缩内存比读物理 RAM 慢得多)。
实操建议
- 切到 RAM 面板,看进程列表前 3 名的 PSS
- 如果某几个是游戏/浏览器/社交应用,切到它们的进程详情确认
- 用 TaskManager 的 Force Stop 结束不需要挂后台的进程
- 同时去系统设置里把这些应用的「后台启动」和「自启动」关掉——杀进程只是治标,不让它自己回来才是治本
下一步
内存这边搞清楚了,切到 GPU 面板。