linux查看內存命令
在linux下面,我們常用top命令來查看系統(tǒng)進程,top也能顯示系統(tǒng)內存。我們常用的Linux下查看內容的專用工具是free命令。
推薦:《Linux教程》
Linux下內存查看命令free詳解:
在Linux下查看內存我們一般用free命令:
$?free ?????????????total???????used???????free?????shared????buffers?????cached Mem:???????3266180????3250004??????16176??????????0?????110652????2668236 -/+?buffers/cache:?????471116????2795064 Swap:??????2048276??????80160????1968116
下面是對內存查看free命令輸出內容的解釋:
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解釋了。
-/+ buffers/cache含義與區(qū)別:
第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區(qū)別在于使用的角度來看:
第二行是從OS的角度來看,因為對于OS,buffers/cached 都是屬于被使用,所以他的可用內存是16176KB,已用內存是3250004KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程序角度來看,對于應用程序來說,buffers/cached 是等于可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。
所以從應用程序的角度來說,可用內存=系統(tǒng)free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
內存如何進行交換
接下來解釋什么時候內存會被交換,以及按什么方交換。 當可用內存少于額定值的時候,就會開會進行交換。如何看額定值:
cat?/proc/meminfo
輸出為:
$?cat?/proc/meminfo MemTotal:??????3266180?kB MemFree:?????????17456?kB Buffers:????????111328?kB Cached:????????2664024?kB SwapCached:??????????0?kB Active:?????????467236?kB Inactive:??????2644928?kB HighTotal:???????????0?kB HighFree:????????????0?kB LowTotal:??????3266180?kB LowFree:?????????17456?kB SwapTotal:?????2048276?kB SwapFree:??????1968116?kB Dirty:???????????????8?kB Writeback:???????????0?kB Mapped:?????????345360?kB Slab:???????????112344?kB Committed_AS:???535292?kB PageTables:???????2340?kB VmallocTotal:?536870911?kB VmallocUsed:????272696?kB VmallocChunk:?536598175?kB HugePages_Total:?????0 HugePages_Free:??????0 Hugepagesize:?????2048?kB
用free -m查看的結果:
[root@scs-2?tmp]#?free?-m ?????????????total???????used???????free?????shared????buffers?????cached Mem:??????????3189???????3173?????????16??????????0????????107???????2605 -/+?buffers/cache:????????460???????2729 Swap:?????????2000?????????78???????1921
查看/proc/kcore文件的大?。▋却骁R像):
$?ll?-h?/proc/kcore -r--------?1?root?root?4.1G?Jun?12?12:04?/proc/kcore
備注:
占用內存的測量
測量一個進程占用了多少內存,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息,實際上top等工具也通過這里來獲取相應的信息。
/proc/meminfo?機器的內存使用信息 /proc/pid/maps?pid為進程號,顯示當前進程所占用的虛擬地址。 /proc/pid/statm?進程所占用的內存 $?cat?/proc/self/statm 654?57?44?0?0?334?0
輸出解釋
CPU 以及CPU0。。。的每行的每個參數(shù)意思(以第一行為例)為:
參數(shù)?解釋?/proc/status Size?(pages)?任務虛擬地址空間的大小?VmSize/4 Resident(pages)?應用程序正在使用的物理內存的大小?VmRSS/4 Shared(pages)?共享頁數(shù)?0 Trs(pages)?程序所擁有的可執(zhí)行虛擬內存的大小?VmExe/4 Lrs(pages)?被映像到任務的虛擬內存空間的庫的大小?VmLib/4 Drs(pages)?程序數(shù)據(jù)段和用戶態(tài)的棧的大小?(VmData+?VmStk?)4 dt(pages)?04
查看機器可用內存
/proc/28248/>free total?used?free?shared?buffers?cached Mem:?1023788?926400?97388?0?134668?503688 -/+?buffers/cache:?288044?735744 Swap:?1959920?89608?1870312
Linux查看內存及內存使用小結:
我們通過free命令查看機器空閑內存時,會發(fā)現(xiàn)free的值很小。這主要是因為,在linux中有這么一種思想,內存不用白不用,因此它盡可能的cache和buffer一些數(shù)據(jù),以方便下次使用。但實際上這些內存也是可以立刻拿來使用的。
所以空閑內存=free+buffers+cached=total-used
更多編程相關內容,請關注php中文網Linux教程欄目!