linzihao0629 发表于 2016-03-03 08:57

Linux系统中/proc/meminfo信息的疑问

基于ARM9处理器写了一个简单的Linux服务器程序,在测试中查看/proc/meminfo日志,发现了一个很奇怪的问题。
这是服务器程序刚启动时的meminfo日志:
MemTotal:          61180 kB
MemFree:         18992 kB
Buffers:               0 kB
Cached:            24452 kB
SwapCached:            0 kB
Active:            23884 kB
Inactive:          14800 kB
Active(anon):      14316 kB
Inactive(anon):      4 kB
Active(file):       9568 kB
Inactive(file):    14796 kB
Unevictable:         4 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:             0 kB
AnonPages:         14264 kB
Mapped:             4824 kB
Shmem:                84 kB
Slab:               2312 kB
SReclaimable:      752 kB
SUnreclaim:         1560 kB
KernelStack:         288 kB
PageTables:          120 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       30588 kB
Committed_AS:      34220 kB
VmallocTotal:   958464 kB
VmallocUsed:         424 kB
VmallocChunk:   712240 kB

这是程序运行两天后的meminfo日志:
MemTotal:          61180 kB
MemFree:            2032 kB
Buffers:               0 kB
Cached:            25740 kB
SwapCached:            0 kB
Active:            42620 kB
Inactive:          12828 kB
Active(anon):      29800 kB
Inactive(anon):      4 kB
Active(file):      12820 kB
Inactive(file):    12824 kB
Unevictable:          12 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:             0 kB
AnonPages:         29748 kB
Mapped:             4832 kB
Shmem:                84 kB
Slab:               2464 kB
SReclaimable:      896 kB
SUnreclaim:         1568 kB
KernelStack:         280 kB
PageTables:          152 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       30588 kB
Committed_AS:      49948 kB
VmallocTotal:   958464 kB
VmallocUsed:         424 kB
VmallocChunk:   712240 kB

按照对meminfo的解释,应用程序可用内存是MemFree+Buffers+Cached,那么我的程序的可用内存由开始时的43444KB减少到了27772KB,这说明服务器程序存在内存泄漏。但是我用valgrind对程序进行扫描,又提示不存在确定的泄漏点。
通过对比前后的meminfo日志,我发现随着程序的运行,AnonPages这一项显著增加了(由14264 kB到了29748 kB),增加的空间几乎等于减少的空闲内存,我查了一些资料也没搞明白AnonPages是什么,所以请教诸位,AnonPages到底是什么?与程序的内存泄漏是否有关呢?

残剑饮血 发表于 2016-03-08 18:59

AnonPages:未映射页的内存大小
这是对系统而言的。

看程序内存泄露为啥去看 /proc/meminfo ?
用top之类的看一下应用程序是否一直在增长不就可以了么?
页: [1]
查看完整版本: Linux系统中/proc/meminfo信息的疑问