如何确定linux中的可用物理内存

时间:2011-03-12 19:12:14

标签: linux memory

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

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 

5 个答案:

答案 0 :(得分:22)

这是检查内存使用情况的简单命令:

free

答案 1 :(得分:4)

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

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

其他数字可能只是令人困惑,因为整个系统内存使用情况因共享内存,各种缓冲区等而变得复杂。

答案 2 :(得分:3)

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

要快速检查应用程序的内存使用情况,请使用getrusage()(需要最新的Linux内核)并查看ru_maxrss值。 /proc/meminfo提供有关整个系统的信息。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

你的问题是问一些不同的东西,但因为这是#2谷歌 点击“linux物理内存” -

在x86上运行的较新内核版本包含DirectMap4kDirectMap2M和 最后可能包含DirectMap4MDirectMap1G个字段 /proc/meminfo。将它们相加并乘以1024似乎可以得到 物理RAM的字节数。