在 Linux 的 top 或 free 命令中,buff/cache 是 buffer(缓冲区) 和 cache(缓存区)

在 Linux 的 topfree 命令中,buff/cachebuffer(缓冲区)cache(缓存区) 的合称,二者都是内核用于提升系统 I/O 性能的内存区域,具体区别和作用如下:

1. 核心概念

类型 中文名称 作用对象 核心作用
Buffer 缓冲区 块设备(硬盘、SSD 等) 临时存储要写入磁盘的数据,减少磁盘碎片化写入,提升写入效率
Cache 缓存区 文件系统、数据 临时存储从磁盘读取的数据,下次访问时直接从内存读取,避免重复磁盘 I/O

2. 关键特点

  • buff/cache 属于「可回收内存」
    当系统空闲时,内核会主动利用空闲物理内存作为 buff/cache;当应用程序需要更多内存时,内核会自动释放 buff/cache 分配给应用,不会导致内存不足
  • 查看 buff/cache 具体数值
    free -h 命令可以更清晰地看到细分数据:
    free -h
    # 输出示例
                  total        used        free      shared  buff/cache   available
    Mem:           3.5Gi       342Mi       3.2Gi       0.0Ki       0.0Ki       3.2Gi
    Swap:            0B          0B          0B
    
    • buff/cache:缓冲区+缓存区的总占用内存
    • available:真正可用的内存(free + 可回收的 buff/cache)

3. 与 top 命令的关联

你之前提供的 top 截图中没有显示 buff/cache,原因是:

  • 默认 top 界面的内存统计只展示 total/used/free,不显示 buff/cache 细分。
  • top 运行时的 m 切换内存显示模式,或直接用 free -h 查看更完整的内存分布。

4. 手动释放 buff/cache(可选)

一般无需手动释放,内核会自动管理。若需测试或临时释放,可执行:

# 释放 pagecache(缓存区)
echo 1 > /proc/sys/vm/drop_caches

# 释放 dentries 和 inodes(文件元数据缓存)
echo 2 > /proc/sys/vm/drop_caches

# 释放所有 buff/cache
echo 3 > /proc/sys/vm/drop_caches

注意:需要 root 权限,且仅临时生效,系统后续会重新分配 buff/cache。

要不要我帮你整理 free 命令的参数详解和内存状态解读技巧

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容