内存泄漏?Firefox/Chromium 都占满了 RAM

内存泄漏?Firefox/Chromium 都占满了 RAM

来自 linuxatemyram.com:

如果您的应用程序需要更多内存,它们只需收回磁盘缓存借用的一块内存即可。磁盘缓存始终可以立即归还给应用程序!您的内存并不短缺!

事实并非如此。某些东西正在消耗内存,并且不会归还。用例是 Chromium 或 Firefox 有很多标签,然后退出它们。浏览器运行前会占用更多的内存。

一些数字可以解释我的意思:

启动时:使用<2GB,通常~1.7GB。

在 FF/Chromium 中打开大量标签,最终占用超过 8GB

退出 FF/Chromium,已使用 3.5GB。

3.5-1.7=1.8GB 是多少?我们称之为 X。

X 是内存缓存吗?内存泄漏?为什么 Firefox 和 Chromium 都能重现完全相同的结果?

打开标签最终会完全占满我的 8GB RAM,系统冻结,然后标签最终死亡/冻结/崩溃,释放出足够的内存以继续运行。

我希望 Ubuntu 具有的正确功能是,当应用程序需要 RAM 运行时,将 X 归还给它们。但是,当我启动应用程序时,大部分 RAM 已被 X 占用,无论它是由两种最主流的浏览器创建的,都不会从 X 回收任何 RAM。它会一直保留到我重新启动。

使用“免费”和其他工具并没有帮助我诊断出 WTF X 是什么。

有任何想法吗?

免费输出:

退出铬后约一分钟。

              total        used        free      shared  buff/cache   available
Mem:        8035708     4037332     2202604     1014656     1795772     2713256
Swap:      12441592           0    12441592

过了一会儿。

              total        used        free      shared  buff/cache   available
Mem:        8035708     2497680     4168392      552812     1369636     4715280
Swap:      12441592           0    12441592

一天后,空间很快就填满了 7.9GB,所有的标签都崩溃了。

              total        used        free      shared  buff/cache   available
Mem:        8035708     5855132      739016     1012864     1441560      923084
Swap:      12441592      975712    11465880

在类似的加油和撞车事故之后。

              total        used        free      shared  buff/cache   available
Mem:        8035708     5777812      638932      714256     1618964     1273920
Swap:      12441592           0    12441592

过了一段时间,打开了 Chromium,运行了几个小时(没有达到最大 RAM),然后关闭它:

              total        used        free      shared  buff/cache   available
Mem:        8035708      737080     5869896      438592     1428732     6604848
Swap:      12441592      524436    11917156

启动后立即:

              total        used        free      shared  buff/cache   available
Mem:        8035708      689232     6449124      322912      897352     6769772
Swap:      12441592           0    12441592

Chromium 退出后:

              total        used        free      shared  buff/cache   available  
Mem:        8035708      967988     5677848      531960     1389872     6284744
Swap:      12441592         336    12441256

答案1

据我所知,没有问题。“可用”内存的行为符合预期。随着应用程序占用更多内存,可用内存会减少;一旦它们退出,可用内存就会再次增加。

系统访问交换空间时,系统变得迟缓或用户界面完全停滞也是正常现象,尤其是当支持交换空间的设备速度较慢时。由于硬盘驱动器的访问延迟较高,因此其性能通常不如闪存。

众所周知,Chromium/Chrome 和 Firefox 都会在打开大量标签时占用大量内存。要么为系统添加更多 RAM,要么大幅减少打开的标签数量。使用更快的交换空间支持设备也许可以缓解此问题。


free -h您可以使用(用于人类可读的数字格式)查询虚拟内存管理器以获取当前内存统计信息。您可以使用或和调整后的排序-h列出占用最多内存的 (N-1) 个进程。ps aux --sort -rss | head -n Ntop

您也可能对。。。有兴趣如何找出哪个程序使用了过多的内存?

相关内容