2011-03-12 62 views
4

我试图找出我的软件是否在linux suffers from memory leak上运行。我试图测量/proc/meminfo(见下文)中的可用物理内存,但可以了解哪些字段代表可用内存以及MemFree, Cached, Buffers, Active, Inactive之间的关系。如何确定linux中的可用物理内存

cat /proc/meminfo 
MemTotal:  124128 kB 
MemFree:   62872 kB 
Buffers:    0 kB 
Cached:   15624 kB 
SwapCached:   0 kB 
Active:   38724 kB 
Inactive:  11148 kB 
SwapTotal:   0 kB 
SwapFree:   0 kB 
Dirty:    0 kB 
Writeback:   0 kB 
AnonPages:  34272 kB 
Mapped:   14640 kB 
Slab:    5564 kB 
SReclaimable:  424 kB 
SUnreclaim:  5140 kB 
PageTables:  504 kB 
NFS_Unstable:  0 kB 
Bounce:    0 kB 
WritebackTmp:  0 kB 
CommitLimit:  62064 kB 
Committed_AS: 57936 kB 
VmallocTotal: 655360 kB 
VmallocUsed:  1016 kB 
VmallocChunk: 654328 kB 

回答

3

如果您正在查找内存泄漏,请使用Valgrind

为了您应用的内存使用的快速检查,使用getrusage()(需要最新的Linux内核),并期待在ru_maxrss值。 /proc/meminfo提供有关整个系统的信息。

1

如果您正在查看您的软件是否存在内存泄漏,请查看'ps'或'top'以查看您的程序。查看虚拟大小(VSS)是否随时间增加。

要调试这样的内存问题,请使用Valgrind或(我个人最喜欢的)dmalloc。

17

这是简单的命令来查看内存使用:

free 
+2

'free -m'以MB显示 – cprcrack 2014-07-02 07:28:13

4

的/ proc/meminfo中是整个系统的内存信息。/proc/[pid]/status具有单个进程的内存使用信息。 (它也在/ proc/[pid]/stat中以更多机器可解析的格式)。

特别是,VmData(数据段的大小)和VmStk(堆栈段的大小)最有可能用于您。或者只是使用pstop而不是直接尝试自己读取数据。

其他数字很可能只是会造成混乱,因为整个系统的内存使用情况是由共享内存,各种缓冲液等复杂

0

你的问题问不同的东西,但由于这是# 2谷歌 命中为“Linux的物理内存” - x86上运行

较新的内核版本有DirectMap4kDirectMap2M,并 潜在DirectMap4MDirectMap1G领域在 /proc/meminfo结束。将它们相加并乘以1024似乎给出物理RAM的字节数 。

相关问题