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

我试图找出我的linux suffers from memory leak运行的软件是否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 

Solutions Collecting From Web of "如何确定linux中的可用物理内存"

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

 free 

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

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

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

如果你正在寻找内存泄漏,使用Valgrind 。

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

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

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

你的问题是要求一些不同的东西,但是因为这是“linux物理内存”的#2命中 –

在x86上运行的更新的内核版本在/proc/meminfo的末尾有DirectMap4kDirectMap2M和潜在的DirectMap4MDirectMap1G字段。 把它们加起来乘以1024似乎给出了物理RAM的字节数。