☰
RSS:内存真实占用的真相
2026/10/11 9:37:39 网站建设 项目流程

RSS(Resident Set Size,驻留集大小)是:一个进程当前有多少内存页面实际驻留在物理内存 RAM 中。

简单理解:

RSS 看的是“现在有多少页面真的在内存条里”,而不是申请了多少地址或获得了多少内存承诺。

接着用酒店来理解

概念酒店比喻
虚拟地址空间圈出了多少房间编号
提交量正式预订了多少房间
RSS现在实际入住了多少房间

例如,一个游戏:

保留虚拟地址:8 GB 提交内存: 2 GB

如果这部分已提交内存中,当前有500 MB驻留在 RAM,那么这部分对 RSS 的贡献就是约500 MB。

不过,游戏还会加载代码、动态库、映射文件等,它们驻留的页面也可能计入 RSS,所以整个进程的 RSS 不一定就是 500 MB。


RSS 包含哪些内存?

通常包括当前驻留在 RAM 中的:

  • 程序代码;
  • 堆内存,例如游戏对象、部分资源数据;
  • 栈内存;
  • 动态库;
  • 文件映射和共享内存页面。

不包括:

  • 只是保留、没有实际驻留的地址范围;
  • 已被换出、当前不在 RAM 中的页面。

独立显卡的显存也不能简单算进 RSS。


最容易误解:RSS 不全是进程“独占”的

假设两个进程共享同一份100 MB的动态库页面,而且这些页面都计入各自的驻留集:

进程 A 的 RSS:包含这 100 MB 进程 B 的 RSS:也包含这 100 MB

但物理内存里,这份共享页面只有一份。

因此:

把所有进程的 RSS 相加,可能重复计算共享内存。

这也是为什么 Linux / Android 中还会看PSS:

RSS:共享页面在每个进程中都完整计入。 PSS:共享页面按比例分摊。

在上面的例子里,如果只有这两个进程共享,100 MB 对各自 PSS 的贡献就是约50 MB。


RSS 高就说明内存泄漏吗?

不一定。

RSS 上升可能是:

  • 加载了更多资源;
  • 访问了原先尚未驻留的页面;
  • 分配器保留了已释放的内存,准备复用;
  • 确实发生了内存泄漏。

因此:

释放游戏对象 ≠ 内存立即归还操作系统 ≠ RSS 立即下降

一句话记住

提交量是“系统答应提供多少”,RSS 是“当前有多少页面真的在 RAM 里”,但其中可能有与其他进程共享的部分。

RSS 常见于 Linux / Android;Windows 中与它相近的概念叫Working Set(工作集)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询