本文主要是介绍内存中的buffer和cache,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、buffer和cache是内存的一部分即占用了内存的空间
提到查看linux主机内存,我们总会想到free命令也一般用该命令,如下面的输出:
[root@localhost ~]# freetotal used free shared buff/cache available
Mem: 3861292 283220 3424792 11848 153280 3375380
Swap: 2097148 0 2097148
[root@localhost ~]#
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存,比如总内存、已用内存、缓存、可用内存等。其中缓存是 Buffer 和 Cache 两部分的总和 。
有关于free命令的使用,可自行百度,一搜一大堆。
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。
二、介绍
Buffer
Buffer是用于存储数据块的临时内存区域,主要用于缓存I/O操作。当数据从磁盘或其他设备读取到内存时,首先会存储在Buffer中,以提供对这些数据的快速访问。Buffer可以看作是一个中介层,有助于优化读写性能。
Cache
Cache也是一种临时存储,但它的目的是缓存文件系统的数据块。与Buffer不同,Cache主要用于存储文件系统的元数据和文件数据。它通过预加载常用文件的内容,提高了对这些文件的访问速度,从而加速文件系统的读取操作。
三、工作原理
Buffer的工作原理
当应用程序请求从磁盘读取数据时,内核会先检查Buffer中是否已经存在相应的数据块。如果存在,内核会直接从Buffer返回数据,避免了对物理磁盘的读取。如果数据不在Buffer中,内核会将数据块从磁盘读取到Buffer中,并返回给应用程序。这样,Buffer在一定程度上减少了对磁盘的访问次数,提高了I/O性能。
Cache的工作原理
Cache的工作原理类似于Buffer,但它更侧重于文件系统的数据。当文件系统需要读取文件时,内核会先检查Cache中是否有相应的数据块。如果存在,内核将直接从Cache中返回数据。如果数据不在Cache中,内核会从文件系统中读取数据,并将一份拷贝存储在Cache中,以备将来的读取请求。这种机制提高了文件系统的读取速度,特别是对于那些频繁被访问的文件。
四、区别
存储内容
Buffer存储的是I/O操作的数据块,通常是对物理设备的读写请求的中介。
Cache存储的是文件系统的数据块,包括文件的元数据和实际内容。
读取方式
Buffer主要用于减少对物理设备的读写次数,通过缓存I/O操作提高性能。
Cache更侧重于文件系统的读取,通过缓存文件数据和元数据提高文件系统的整体读取速度。
五、清理策略
Buffer中的数据通常被操作系统维护,不容易手动清理。
Cache的内容可以通过手动或自动的方式进行清理,以释放内存空间。
内存中的buffer和cache_sreclaimable-CSDN博客
这篇关于内存中的buffer和cache的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!