0

0

Linux free 与 /proc/meminfo 内存分析

冷炫風刃

冷炫風刃

发布时间:2026-02-14 17:51:09

|

769人浏览过

|

来源于php中文网

原创

available 列才是真正的可用内存,它由内核估算可立即分配而不触发 oom 的量;memfree+buffers+cached 不可简单相加,因存在重复计算和不可回收页;/proc/meminfo 中 memavailable 与 free 命令的 available 值应一致,差异多源于刷新延迟或工具版本。

linux free 与 /proc/meminfo 内存分析

free 命令输出里 buffers 和 cached 到底算不算“可用内存”

算,但得看 Linux 版本和内核参数。2.6.27 之后的内核把 cached(页缓存)和 buffers(块设备缓冲区)都归入可快速回收的内存池,free 命令的 available 列就是专门为此设计的——它估算当前能立刻分配给新进程而不触发 OOM 的内存大小。

常见错误是盯着 free 列的数字猛看,以为那就是“空闲内存”。其实那个值只包含完全没被使用的物理页,Linux 几乎从不长期保留这种状态;真正关键的是 available 列(>= 3.14 内核默认显示)。

  • 如果 available 明显低于应用常驻内存需求(比如 Java 堆设了 4G,available 只剩 1.2G),说明系统已逼近压力点
  • cached 高 ≠ 内存泄漏,它只是文件读写缓存,进程需要时内核会自动回收
  • 老内核(如 RHEL 6 的 2.6.32)没有 available 列,得靠 grep -i "memavailable" /proc/meminfo 查,若无此字段,则用 free + buffers + cached 粗略估算(但偏乐观)

/proc/meminfo 里 MemAvailable 为什么比 free 命令的 available 小

不会。正常情况下二者数值一致——因为 free 命令的 available 列直接读的就是 /proc/meminfo 中的 MemAvailable 字段。如果你看到差异,大概率是时间差或工具版本问题。

常见错误现象:free -h 输出 available 是 3.2G,而 cat /proc/meminfo | grep MemAvailable 显示 2.8G。这通常是因为:

  • free 默认每秒刷新一次,你执行两次命令之间内核已回收/分配了部分缓存
  • 某些定制版 free(如 BusyBox)不支持 MemAvailable,会退化为旧算法计算,结果不可比
  • /proc/meminfo 是实时快照,free 可能做了四舍五入(比如显示 3.2G 实际是 3215MB,而 MemAvailable: 行写的是 3142000 kB)

MemFree、Buffers、Cached、SReclaimable 这几个字段的关系

它们代表不同层级的“可回收性”,不是简单相加关系。内核内存管理把缓存分成了有明确归属和无明确归属两类:

Zeemo AI
Zeemo AI

一款专业的视频字幕制作和视频处理工具

下载
  • MemFree:完全未使用的物理页,极少,通常几百 MB 就算多
  • Buffers:块设备 I/O 的临时缓冲(如 ext4 日志、磁盘元数据),可立即回收
  • Cached:传统意义上的页缓存(文件内容),其中一部分属于可回收的 slab 对象,体现在 SReclaimable
  • SReclaimable:slab 分配器中可被回收的缓存(如 dentry、inode),它已被计入 Cached,**不能重复加到可用内存里**

所以别用 MemFree + Buffers + Cached 当可用内存——这样高估了,因为 Cached 里混着不可轻易动的 dirty page 和 locked page;MemAvailable 才是内核自己跑过回收模拟后给出的靠谱值。

为什么 top 或 ps 看到的进程 RSS 加起来远超 MemTotal

因为 RSS(Resident Set Size)统计的是进程独占的物理内存页,但很多页是共享的——比如多个 Java 进程共用同一份 JRE 类库内存,或动态链接的 libc.so 被几十个进程映射,这些页在 RSS 中被重复计算。

更关键的是,/proc/meminfoMemTotal 是物理内存总量,而 RSS 总和反映的是“进程视角的驻留页总数”,两者维度不同:

  • 一个 mmap 共享内存段被 5 个进程映射,RSS 各算一遍,但物理内存只占一份
  • tmpfs 文件系统占用的内存也计入 Shmem 字段,但它既不在任何进程 RSS 里,也不在 MemFree
  • 内核模块、硬件保留内存(如 GPU 显存)、未释放的 slab(SUnreclaim)都不出现在用户进程 RSS 中

想看真实内存分布,优先盯 MemAvailable/proc/meminfo 各字段总和是否接近 MemTotal;RSS 总和只是辅助判断进程是否异常膨胀的线索,不是内存水位表。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

416

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

588

2023.08.10

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

448

2023.08.14

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1500

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

713

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

298

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

790

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

582

2023.07.06

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

76

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.1万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号