/ proc / meminfo可以指出内存泄漏的一些提示吗?

时间:2016-06-19 22:26:43

标签: linux memory-leaks linux-kernel

如果系统中存在内存泄漏,请定期cat /proc/meminfo提示提示。

如果是这样,我应该关注哪个度量标准,假设内存模块中存在可疑的内存泄漏:

> cat /proc/meminfo

MemTotal:     16344972 kB
MemFree:      13634064 kB
MemAvailable: 14836172 kB
Buffers:          3656 kB
Cached:        1195708 kB
SwapCached:          0 kB
Active:         891636 kB
Inactive:      1077224 kB
HighTotal:    15597528 kB
HighFree:     13629632 kB
LowTotal:       747444 kB
LowFree:          4432 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:             968 kB
Writeback:           0 kB
AnonPages:      861800 kB
Mapped:         280372 kB
Shmem:             644 kB
Slab:           284364 kB
SReclaimable:   159856 kB
SUnreclaim:     124508 kB
PageTables:      24448 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
WritebackTmp:        0 kB
CommitLimit:   7669796 kB
Committed_AS:   100056 kB
VmallocTotal:   112216 kB
VmallocUsed:       428 kB
VmallocChunk:   111088 kB
AnonHugePages:   49152 kB

1 个答案:

答案 0 :(得分:4)

更好的启动方式是free命令行工具,它使用相同的文件/proc/meminfohttp://man7.org/linux/man-pages/man1/free.1.html

  

free - 显示系统中可用和已用内存的数量。 free显示系统中可用和已用物理和交换内存的总量,以及内核使用的缓冲区和高速缓存。通过解析/ proc / meminfo

收集信息

free工具有“used”和“free”内存列,每列有两个值,但事实是在Linux(和Unix,也可能在Windows中)有Page cache机制从RAM中缓存HDD中的数据。

实际上,这只是一个缓存,当你的应用程序要求并使用更多内存时,页面缓存将被部分丢弃(如果缓存的数据未被修改),或刷新到HDD(如果数据被修改)并且OS将给出对你的应用程序的记忆。

在Linux中,页面缓存使用的内存报告为不可用,但在“buffers”/“cache”列中,并且在“used”的第一行中占用

   buffers
          Memory used by kernel buffers (Buffers in /proc/meminfo)

   cache  Memory used by the page cache and slabs (Cached and
          SReclaimable in /proc/meminfo)

免费输出示例:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1504       1491         13          0         91        764
-/+ buffers/cache:        635        869
Swap:         2047          6       2041

第一行“免费”列是免费RAM,没有被任何东西使用。第二行(第二个值)是空闲RAM +缓存+缓冲区。

您可以在

了解更多信息