![浏览器占用过多 RAM](https://linux22.com/image/1570134/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8D%A0%E7%94%A8%E8%BF%87%E5%A4%9A%20RAM.png)
答案1
简短版本:Firefox 不会占用太多 RAM,在一台总 RAM 为 8 GB 的机器上不会。而且它占用的 RAM 数量也不是固定的。如果您运行其他需要大量 RAM 的程序,Windows 会缩减其他进程以腾出空间。(事实上,这就是您问题的答案 - 如何让 Firefox 使用更少的 RAM?答案:运行其他需要 RAM 的程序!)
长版本:
任何进程(或进程子集,或整个进程集加上操作系统)在任何虚拟内存操作系统中的“内存使用情况”都极大地依赖于进程的行为和 RAM 压力。也就是说,对于任何一个进程,它都取决于您有多少 RAM、该进程正在做什么以及您正在运行的其他哪些程序也需要 RAM。
虚拟内存操作系统中的进程实际上并不要求或甚至不请求任何内存量(除了操作系统预留的一些非常小的分配)。相反,它们请求不同数量的虚拟内存在 Windows 中,这可以通过调用VirtualAlloc
Windows API、或malloc()
或new()
或来完成MapViewOfFile
;在 *nix 环境中有等效项。
这些调用本身不会为进程分配任何 RAM。
之后,当进程访问分配区域内的位置时,操作系统会“按需”为它们分配 RAM。(这称为“按需分页”,以这种方式工作的操作系统称为“按需分页”操作系统。)
操作系统会尝试平衡所有进程对 RAM 的需求。只要有足够的可用 RAM(鉴于您显示 8 GB 可用空间的 60%,您确实有足够的 RAM),进程的 RAM 使用量(称为“工作集”)几乎可以无限制地增长。但是当可用 RAM 变得太少时,操作系统必须开始削减进程,迫使它们“调出”之前调入的部分内容。(这里有时会涉及“页面文件”,但并非总是如此。)
所以……一个进程占用的 RAM 数量根本不是一个固定的或甚至很难预测的数字。它非常随机,取决于上面描述的变量。
在具有更多或更少 RAM 的系统上运行浏览器访问相同的网站,或者运行或占用更多或更少 RAM 的其他程序时,结果看起来会非常不同。
假设您只使用了 8 GB 系统上的 40% RAM(剩下近 5 GB 可用),那么您不会遇到问题。(我要指出的是,您可用的 RAM 量比几乎所有个人拥有的机器都多全部的,不久前!)
如果您运行的程序需要的 RAM 比当前可用内存多,Windows 会削减大型进程,尤其是长时间空闲的进程,以便为新程序腾出空间。Firefox 的大小约为 250 MB,我认为您的屏幕截图中显示的 Firefox 并不算特别大。
如果那无法正常工作,那么我们可以说您遇到了问题。