【问题标题】:Why my systems doesnt free the buffers/cache为什么我的系统不释放缓冲区/缓存
【发布时间】:2014-10-21 18:07:28
【问题描述】:

我有一个需要大量内存的应用程序。我让它在具有 32GB RAM 的系统上运行一夜。同时运行free -m -s 20 以查看内存状态如何变化。我的应用程序是我在重新启动 Ubuntu 后唯一手动启动的(当然终端除外)。让我们看看部分输出:

应用程序启动时间:

             total       used       free     shared    buffers     cached
Mem:         32100       1428      30671         35         69        594
-/+ buffers/cache:        765      31335
Swap:        32693          0      32693

申请结束前:

             total       used       free     shared    buffers     cached
Mem:         32100      31860        240         84          2      17420
-/+ buffers/cache:      14437      17663
Swap:        32693         12      32681

申请结束后:

             total       used       free     shared    buffers     cached
Mem:         32100      18723      13376         84          2      17434
-/+ buffers/cache:       1285      30814
Swap:        32693         12      32681

并且状态保持不变好几个小时,直到我早上回来。

我的问题是: 为什么我的大部分记忆仍然被认为是 free 的一部分 buffers/cache ?这部分内存何时会再次成为整体Mem:free 部分?

然后打开了一个浏览器、一个 IDE 和一些其他 GUI 应用程序,以查看内存是如何以及从何处分配给新应用程序的:

             total       used       free     shared    buffers     cached
Mem:         32100      20378      11721         88        160      18075
-/+ buffers/cache:       2143      29956
Swap:        32693         12      32681

显然,Mem:buffers/cache: 的可用内存已分配给新应用程序。你能帮我解释一下吗?

【问题讨论】:

    标签: c++ ubuntu memory memory-management


    【解决方案1】:

    缓存的数据也是已用内存的一部分。程序结束后,您的程序从磁盘加载的数据将成为缓存的一部分。因此,您的系统不会释放任何数据,但如果您的内存再次需要,它会删除缓存的数据。 A more or less funny page, that describes the problem.

    【讨论】:

    • 我觉得我被敦促将此链接发布到 Twitter
    • @TheSlayer 我点击了您在回答中提到的链接,您同意最后一部分吗? (How do I see how much free ram I really have?) 是 free 列的 buffers/cache 我的总可用内存吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2020-09-25
    • 2016-07-10
    • 2018-10-03
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多