做嵌入式开发对内存泄露很敏感,而对泄露的位置更加关注。本文记录一下从网上搜集的/proc/meminfo各参数的含义。还不完整,待补完。
Reference
关于/proc/meminfo的理解
linux/Documentation/filesystems/proc.txt
说明
以下项目并不是每一个 Linux 系统上都有的,根据你的 Linux 设计和版本,可能多出或者少了某些项。
参考资料中的第二项是最新的 Linux 文档
| 项目名 | 说明 |
|---|---|
| MemTotal | 所有可用的 RAM 大小,物理内存减去预留位和内核使用 |
| MemFree | LowFree + HighFree |
| Buffers | 用来给块设备做缓存的大小(文件系统的 metadata, tracking in-flight pages) |
| Cached | 文件的缓冲区大小 |
| SwapCached | 已经被交换出来的内存。与 I/O 相关 |
| Active | 经常(最近)被使用的内存 |
| Inactive | 最近不常使用的内存。这很容易被系统移做他用 |
| Active(anon) | ? |
| Inactive(anon) | ? |
| Unevictable | ? |
| Mlocked | ? |
| HighTotal | 所有在 860MB(0x35C00000)以上的空间。主要是用户空间程序或缓存页 |
| LowTotal | 860MB 以下的空间。如果该空间用完了,系统可能会异常 |
| HighFree | 860MB 以上空间的可用空间 |
| LowFree | 860MB 以下空间的可用空间 |
| SwapTotal | 交换空间总和 |
| SwapFree | RAM 暂存在 Swap 中的大小 |
| Dirty | 等待写回的数据大小 |
| WriteBack | 正在写回的数据大小 |
| Mapped | 映射文件大小 |
| AnonPages | 映射到用户空间的非文件页表大小 |
| Shmem | ? |
| Slab | 内核数据结构缓存 |
| SReclaimable | Slab 的一部分。当内存压力大时,可以 reclaim |
| SUnreclaim | 不可以 reclaim 的 Slab |
| KernelStack | ? |
| PageTables | 最底层的页表的内存空间 |
| NFS_Unstable | 已经发给 NFS 服务器、但是尚未被确认(committed)写入到稳定存储的页表 |
| Bonce | ? |
| WritebackTmp | Memory used by FUSE for temporary writeback buffers |
| CommitLimit | CommitLimit = ('vm.overcommit_ratio' * Physical RAM) |
| Committed_AS | The amount of memory presently allocated on the system.(系统中目前分配了的内存?) |
| VmallocTotal | vmalloc 内存大小 |
| VmallocUsed | 已被使用的虚拟内存大小 |
| VmallocChunk | 在 vmalloc 区域中可用的最大的连续内存块的大小 |


