做嵌入式開發對記憶體洩露很敏感,而對洩露的位置更加關注。本文記錄一下從網上蒐集的/proc/meminfo
各引數的含義。還不完整,待補完。
關於/proc/meminfo的理解
linux/documentation/filesystems/proc.txt
以下專案並不是每乙個 linux 系統上都有的,根據你的 linux 設計和版本,可能多出或者少了某些項。
參考資料中的第二項是最新的 linux 文件
專案名說明
memtotal所有可用的 ram 大小,物理記憶體減去預留位和核心使用
memfreelowfree + highfree
buffers用來給塊裝置做快取的大小(檔案系統的 metadata, tracking in-flight pages)
cached檔案的緩衝區大小
swapcached已經被交換出來的記憶體。與 i/o 相關
active經常(最近)被使用的記憶體
inactive最近不常使用的記憶體。這很容易被系統移做他用
active(anon)?
inactive(anon)?
unevictable?
mlocked?
hightotal所有在 860mb(0x35c00000)以上的空間。主要是使用者空間程式或快取頁
lowtotal860mb 以下的空間。如果該空間用完了,系統可能會異常
highfree860mb 以上空間的可用空間
lowfree860mb 以下空間的可用空間
swaptotal交換空間總和
swapfreeram 暫存在 swap 中的大小
dirty等待寫回的資料大小
writeback正在寫回的資料大小
對映檔案大小
anonpages對映到使用者空間的非檔案頁表大小
shmem?
slab核心資料結構快取
sreclaimableslab 的一部分。當記憶體壓力大時,可以 reclaim
sunreclaim不可以 reclaim 的 slab
kernelstack?
pagetables最底層的頁表的記憶體空間
nfs_unstable已經發給 nfs 伺服器、但是尚未被確認(committed)寫入到穩定儲存的頁表
bonce?
writebacktmpmemory used by fuse for temporary writeback buffers
commitlimitcommitlimit = ('vm.overcommit_ratio' * physical ram)
committed_asthe amount of memory presently allocated on the system.(系統中目前分配了的記憶體?)
vmalloctotalvmalloc 記憶體大小
vmallocused已被使用的虛擬記憶體大小
vmallocchunk在 vmalloc 區域中可用的最大的連續記憶體塊的大小
Linux中許可權
當你在linux下用命令ll 或者ls la的時候會看到這些字眼,這些字眼表示為不同使用者組的許可權 r read就是讀許可權 數字4表示 w write就是寫許可權 數字2表示 x excute就是執行許可權 數字1表示 讀 寫 執行三項許可權可以用數字表示,就是r 4,w 2,x 1。所以,rw...
Linux中控制代碼
1.控制代碼就是乙個識別符號,只要獲得物件的控制代碼,我們就可以對物件進行任意的操作。2.控制代碼不一定是指標。作業系統用控制代碼可以找到一塊記憶體,這個控制代碼可能是識別符號,例如map的key,也可能是指標,看作業系統怎麼處理的了。fd算是在某種程度上替代控制代碼吧 linux 有相應機制,但沒...
Linux中的時鐘概念Linux中的時鐘概念
linux的時鐘中斷中涉及至二個全域性變數乙個是xtime,另乙個則是jiffies。有乙個與時間有關的時鐘 實時時鐘 rtc 這是乙個硬體時鐘,用來持久存放系統時間,系統關閉後靠主機板上的微型電池保持計時。系統啟動時,核心 通過讀取rtc來初始化wall time,並存放在xtime變數中,即xt...