![Ubuntu 16 - 免费命令缓冲区/缓存区别](https://linux22.com/image/999872/Ubuntu%2016%20-%20%E5%85%8D%E8%B4%B9%E5%91%BD%E4%BB%A4%E7%BC%93%E5%86%B2%E5%8C%BA%2F%E7%BC%93%E5%AD%98%E5%8C%BA%E5%88%AB.png)
我认为缓冲区和缓存内存之间存在差异。在 ubuntu 中,我看到它们被混为一谈。ubuntu 对缓冲区和缓存的处理方式是否不同?
在我的例子中,可用内存非常低,我正在尝试调查是什么消耗了这么多内存。因此我打算区分缓冲区和缓存
free -h
total used free shared buff/cache available
Mem: 60G 35G 200K 9.8G 24G 200K
Swap: 0B 0B 0B
答案1
未使用的内存是浪费的内存;因此 Ubuntu(通常是 Linux)会尝试以最佳方式使用它。
据我所知,无论何时打开一个程序,关闭它之后,大量与其进程相关的数据仍然存在于内存中以防您再次运行它,因此 Linux 不必将所有数据再次加载到内存中,因为它已经在那里了。
只要您拥有大量数据,Buff/Cache
您就可以安全地进行,因为实际上如果需要的话,那部分数据会被立即释放。
您可以vmstat -S M
分别查看缓冲区和缓存。首先查看哪一个具有更高的值,然后更容易猜测发生了什么。
以下引文均来自这里:
“缓冲区”表示 RAM 中有多少部分专门用于缓存磁盘块。
“缓存”与“缓冲区”类似,只是这次它缓存了文件读取的页面。
引自这里更清楚的引述如下:
缓冲区与特定块设备相关联,并涵盖文件系统元数据的缓存以及跟踪正在传输的页面。缓存仅包含停放的文件数据。
缓冲区会记住目录中的内容、文件权限,并跟踪特定块设备的内存写入或读取情况。缓存仅包含文件本身的内容。
就您而言,我猜测这很大一部分24G
与有关cache
,这可能是由您系统上运行的特定服务引起的。