为什么我的系统没有释放缓冲区/缓存

Why my systems doesnt free the buffers/cache

本文关键字:缓冲区 缓存 释放 我的 系统 为什么      更新时间:2023-10-16

我有一个内存不足的应用程序。我让它在一个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

状态保持了好几个小时,直到我早上回来。

我的问题是:为什么我的大部分记忆仍然被认为是buffers/cachefree部分?这部分内存何时会再次成为整个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:的空闲内存都被分配给了新的应用程序。你能帮我翻译一下吗?

缓存的数据也是已用内存的一部分。程序结束后,程序从磁盘加载的数据将成为缓存的一部分。因此,如果再次需要内存,系统不会释放任何数据,但会丢弃缓存的数据。一个或多或少有趣的页面,描述这个问题。