可用内存会随着使用量而下降,并且关闭应用程序/重新启动 X 无法恢复

可用内存会随着使用量而下降,并且关闭应用程序/重新启动 X 无法恢复

我知道内核使用内存进行缓存,但该内存可按需供用户应用程序使用。在声称内存“丢失”时,我指的是 的输出中的“可用”内存free,其中考虑到了这一点

在我看来,如果你杀死所有启动的进程,你应该或多或少地恢复到你拥有的可用内存。但情况似乎并非如此。

这是登录到 X 后立即的输出free -k,使用极简主义的 WM 和几个 shell 之类的东西:

重启后:

              total        used        free      shared  buff/cache   available
Mem:        8144232      373664     6945832        1644      824736     7514692

available大小为 7.5MiB,一切都很好。

使用计算机几周后,内存available显着下降,即使我杀死了所有启动的应用程序,内存也仍低于启动时的水平。如果我杀死我能找到的所有应用程序,我可能会获得最多大约 5GiB 的“可用”空间。

然后,如果我重新启动显示管理器并再次登录,我会得到:

              total        used        free      shared  buff/cache   available
Mem:        8144344      577280     5547936      982600     2019128     6279136
Swap:             0           0           0

这确实比简单地杀死应用程序释放更多的内存,但需要我再次重新打开所有内容。此外,这并没有让我接近新启动的 7.5GiB。我发现共享内存使用量占其中的大部分,但由于我已经关闭了每个用户进程,我不明白为什么它如此高。

我想知道是什么原因导致这种行为,以及是否有解决方案,最好是不需要我重新启动计算机或重新启动 X 的解决方案。

答案1

free 显示“共享”的高值,并且交换被禁用。如果 /tmp 作为 tmpfs 挂载,则其中的任何文件实际上都存储在共享内存中,并且没有交换,系统无法交换它们以释放内存。

检查df并查看 /tmp 中使用了多少空间,这可能解释了您在应用程序内存和总系统内存之间看到的差异。

相关内容