當(dāng)前位置 主頁(yè) > 技術(shù)大全 >
它決定了系統(tǒng)能夠同時(shí)運(yùn)行多少應(yīng)用程序,以及這些應(yīng)用程序的運(yùn)行效率
對(duì)于Linux系統(tǒng)管理員和高級(jí)用戶來(lái)說,了解并熟練使用Linux內(nèi)存管理命令是優(yōu)化系統(tǒng)性能、排查內(nèi)存泄漏和確保系統(tǒng)穩(wěn)定性的必備技能
本文將詳細(xì)介紹一系列強(qiáng)大的Linux內(nèi)存管理命令,并解釋如何通過它們來(lái)監(jiān)控、分析和優(yōu)化系統(tǒng)內(nèi)存使用
一、基礎(chǔ)內(nèi)存查看命令 1. free 命令 `free` 命令是最簡(jiǎn)單、最常用的內(nèi)存查看工具之一
它顯示系統(tǒng)的總內(nèi)存、已用內(nèi)存、空閑內(nèi)存以及交換空間的使用情況
通過添加`-h` 參數(shù),可以以人類可讀的格式(如KB、MB、GB)顯示信息
free -h 輸出示例: total used free shared buff/cache available Mem: 7.8G 3.5G 1.5G 512M 2.8G 3.9G Swap: 2.0G 12M 2.0G 2. top 命令 `top` 命令是一個(gè)實(shí)時(shí)系統(tǒng)監(jiān)視工具,它不僅顯示CPU使用情況,還包括內(nèi)存使用情況的動(dòng)態(tài)更新
在`top`界面中,`KiB Mem`行顯示了物理內(nèi)存的使用情況,`KiB Swap`行則顯示了交換空間的使用情況
top 在`top`界面中,你可以按`Shift + M`鍵來(lái)根據(jù)內(nèi)存使用情況對(duì)進(jìn)程進(jìn)行排序,這有助于快速識(shí)別內(nèi)存占用最多的進(jìn)程
3. htop 命令 `htop`是`top`命令的增強(qiáng)版,提供了更友好的用戶界面和更多功能
它通常不是默認(rèn)安裝的,但可以通過包管理器輕松安裝
`htop`允許你通過鼠標(biāo)和鍵盤快捷鍵來(lái)交互地管理進(jìn)程,包括結(jié)束進(jìn)程、調(diào)整優(yōu)先級(jí)等
sudo apt-get install htop 對(duì)于Debian/Ubuntu系統(tǒng) htop 二、深入內(nèi)存診斷與分析 1. vmstat 命令 `vmstat`(Virtual Memory Statistics)命令提供了關(guān)于系統(tǒng)進(jìn)程、內(nèi)存、分頁(yè)、塊IO、陷阱和CPU活動(dòng)的詳細(xì)信息
它對(duì)于理解系統(tǒng)整體性能非常有用
vmstat 1 5 上述命令每秒更新一次,共更新五次
關(guān)鍵字段包括: - `si`(每秒從交換空間換入的內(nèi)存量) - `so`(每秒換出到交換空間的內(nèi)存量) - `bi`(每秒從塊設(shè)備讀取的數(shù)據(jù)量) - `bo`(每秒寫入塊設(shè)備的數(shù)據(jù)量) 2. smem 命令 `smem`(Shared Memory Report)是一個(gè)專門用于報(bào)告內(nèi)存使用情況的工具,它考慮了共享內(nèi)存的影響,提供了比`free`或`top`更準(zhǔn)確的內(nèi)存使用信息
sudo apt-get install smem 對(duì)于Debian/Ubuntu系統(tǒng) smem -r -s rss= -k `-r` 參數(shù)表示遞歸報(bào)告,`-s` 參數(shù)用于指定排序字段,`rss=` 表示按實(shí)際駐留集大小排序,`-k` 參數(shù)表示以KB為單位顯示
3. pmap 命令 `pmap` 命令顯示進(jìn)程的內(nèi)存映射
它對(duì)于分析特定進(jìn)程的內(nèi)存使用情況非常有用
pmap -x ="" 三、內(nèi)存優(yōu)化與故障排查="" 1.="" sync="" 和="" `echo="" 3=""> /proc/sys/vm/drop_caches`
雖然這不是直接管理內(nèi)存的命令,但在某些情況下,清除內(nèi)核緩存可以釋放內(nèi)存,特別是在你懷疑內(nèi)存被緩存大量占用時(shí) 注意,這會(huì)暫時(shí)影響系統(tǒng)性能,因?yàn)榫彺嫘枰匦聵?gòu)建
sync; echo 3 > /proc/sys/vm/drop_caches
- `sync` 命令將所有未寫入磁盤的緩存數(shù)據(jù)寫入磁盤
- `echo 3 > /proc/sys/vm/drop_caches` 命令清除頁(yè)面緩存、回收slab對(duì)象和inode緩存
2. ulimit 命令
`ulimit` 命令用于控制shell進(jìn)程及其啟動(dòng)的子進(jìn)程可以使用的資源量,包括內(nèi)存
ulimit -v