2011-03-12 17 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的字節數 。

相關問題