- 论坛徽章:
- 0
|
基于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到底是什么?与程序的内存泄漏是否有关呢? |
|