最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Linux內(nèi)存管理之free命令的使用

 更新時(shí)間:2026年01月27日 09:50:00   作者:頗有幾分姿色  
在 Linux 系統(tǒng)中,內(nèi)存是關(guān)鍵的資源之一,管理和監(jiān)控內(nèi)存的使用情況對系統(tǒng)的穩(wěn)定性和性能至關(guān)重要,free 命令是 Linux 中用于查看內(nèi)存使用情況的重要工具,下面我們就來看看它的具體使用吧

在 Linux 系統(tǒng)中,內(nèi)存是關(guān)鍵的資源之一,管理和監(jiān)控內(nèi)存的使用情況對系統(tǒng)的穩(wěn)定性和性能至關(guān)重要。free 命令是 Linux 中用于查看內(nèi)存使用情況的重要工具,它可以讓我們快速了解系統(tǒng)中物理內(nèi)存和交換分區(qū)(Swap)的使用狀態(tài)。

本文介紹 free 命令的輸出、各個(gè)字段的含義和內(nèi)存的使用率計(jì)算等。幫助更好地理解和管理 Linux 系統(tǒng)中的內(nèi)存資源。

1. free命令的基本用法

運(yùn)行 free 命令,系統(tǒng)會輸出當(dāng)前內(nèi)存的使用情況。常用的 free 命令選項(xiàng)包括:

  • free:顯示內(nèi)存和交換分區(qū)的使用情況。
  • free -h:以人類可讀的格式顯示(自動選擇合適的單位,如 GB、MB)。
  • free -m:以 MB 為單位顯示內(nèi)存使用情況。
  • free -g:以 GB 為單位顯示內(nèi)存使用情況。

運(yùn)行 free -h 命令后,得到如下輸出:

free -h
              total        used        free      shared  buff/cache   available
Mem:            31G         9.0G         12G        326M        9.8G         21G
Swap:          7.9G        3.9G        4.0G

2. free命令輸出字段詳解

free 命令的輸出通常分為兩部分:物理內(nèi)存(Mem)交換分區(qū)(Swap)。它們各自包含幾個(gè)關(guān)鍵字段,幫助我們了解系統(tǒng)內(nèi)存的使用情況。

2.1. 物理內(nèi)存(Mem)

  • total:物理內(nèi)存總量。該字段表示系統(tǒng)中所有的物理內(nèi)存(RAM)的總大小。在上例中,系統(tǒng)有 31GB 的物理內(nèi)存。
  • used:已使用的物理內(nèi)存。該字段表示已使用的物理內(nèi)存,在現(xiàn)代 Linux 系統(tǒng)中(kernel 2.6.28 及以后,已經(jīng)不包含 buff/cache,僅僅表示真正被應(yīng)用程序和系統(tǒng)內(nèi)核占用的內(nèi)存。上例中,已使用內(nèi)存為 9.0GB。
  • free:空閑的物理內(nèi)存。當(dāng)前沒有被使用的物理內(nèi)存。在上例中,空閑內(nèi)存為 12GB。
  • shared:共享內(nèi)存。該字段表示用于進(jìn)程間共享內(nèi)存的部分,通常是 tmpfs 或類似機(jī)制分配的內(nèi)存。在上例中,共享內(nèi)存為 326MB。
  • buff/cache:緩沖和緩存占用的內(nèi)存。Linux 系統(tǒng)會盡量利用空閑內(nèi)存來緩存文件系統(tǒng)中的數(shù)據(jù),以加速文件讀取。這部分內(nèi)存可以在需要時(shí)快速釋放給應(yīng)用程序使用。上例中,緩存和緩沖占用了 9.8GB。
  • available:可用的內(nèi)存。該字段表示系統(tǒng)中實(shí)際可供新進(jìn)程使用的內(nèi)存,包括 free 內(nèi)存和可以隨時(shí)回收的 buff/cache 內(nèi)存。上例中,可用內(nèi)存為 21GB。這個(gè)字段比 free 更能準(zhǔn)確反映系統(tǒng)的內(nèi)存可用性。

2.2. 交換分區(qū)(Swap)

交換分區(qū)是當(dāng)物理內(nèi)存不足時(shí),Linux 將部分內(nèi)存頁交換到硬盤上的區(qū)域。交換分區(qū)雖然能夠幫助系統(tǒng)在內(nèi)存不足時(shí)繼續(xù)運(yùn)行,但訪問速度遠(yuǎn)不如物理內(nèi)存快,頻繁使用交換分區(qū)可能會影響系統(tǒng)性能。

  • total:交換分區(qū)總量。表示系統(tǒng)中的交換分區(qū)大小。在上例中,系統(tǒng)有 7.9GB 的交換分區(qū)。
  • used:已使用的交換分區(qū)。顯示當(dāng)前被使用的交換分區(qū)大小。在上例中,3.9GB 的交換分區(qū)已經(jīng)被使用。
  • free:空閑的交換分區(qū)。顯示剩余可用的交換分區(qū)大小。在上例中,4.0GB 的交換分區(qū)仍然可用。

3. 如何正確計(jì)算內(nèi)存使用率

現(xiàn)代 Linux 系統(tǒng)中,used 字段已經(jīng)排除了緩存和緩沖內(nèi)存,所以 (used / total) ((total - free - buff/cache) / total) 本質(zhì)上是等價(jià)的,計(jì)算結(jié)果幾乎相同。

3.1. 使用used計(jì)算內(nèi)存使用率

內(nèi)存使用率 = (used / total) * 100

根據(jù)上面的數(shù)據(jù):

內(nèi)存使用率 = (9.0G / 31G) * 100 ≈ 29.03%

3.2. 使用free、 buff/cache計(jì)算內(nèi)存使用率

內(nèi)存使用率 = ((total - free - buff/cache) / total) * 100

根據(jù)上面的數(shù)據(jù):

內(nèi)存使用率 = ((31G - 12G - 9.8G) / 31G) * 100
          = (9.2G / 31G) * 100 ≈ 29.68%

free 命令的結(jié)果是四舍五入的,所以結(jié)果看起來不一致,可以使用更精確小單位去計(jì)算,這里就不展示了。

3.3. 使用 available字段

直接使用 available 字段也可以快速判斷系統(tǒng)的內(nèi)存可用性。available 包含了當(dāng)前空閑內(nèi)存、可以快速回收的緩存內(nèi)存、部分可釋放的slab內(nèi)存,所以這個(gè)是參考內(nèi)存還能使用多少的靠譜指標(biāo)。內(nèi)存使用率不是官方定義的,也不是官方標(biāo)準(zhǔn),只能作為參考。畢竟linux的內(nèi)存哲學(xué)是:空閑內(nèi)存是浪費(fèi)的,少不等于不可以用。

4. 交換分區(qū)的作用與使用

交換分區(qū)(Swap)是物理內(nèi)存的延伸,當(dāng) RAM 不足時(shí),系統(tǒng)會將部分不常用的內(nèi)存頁寫入交換分區(qū)。雖然交換分區(qū)可以緩解內(nèi)存不足的情況,但由于磁盤的速度遠(yuǎn)低于物理內(nèi)存,頻繁使用交換分區(qū)可能會導(dǎo)致系統(tǒng)變慢。

因此,當(dāng)發(fā)現(xiàn)系統(tǒng)頻繁使用交換分區(qū)時(shí),可能需要考慮增加物理內(nèi)存,或者優(yōu)化內(nèi)存密集型的應(yīng)用程序。

如何查看 Swap 使用情況:

free -h
              total        used        free      shared  buff/cache   available
Mem:            31G         9.0G         12G        326M        9.8G         21G
Swap:          7.9G        3.9G        4.0G

系統(tǒng)有 7.9GB 的交換分區(qū),其中 3.9GB 已經(jīng)被使用,剩下 4.0GB 可用。

5.free命令的其他選項(xiàng)詳解及組合使用

除了 free 命令的基本用法外,它還提供了多個(gè)選項(xiàng)用于不同的場景??梢酝ㄟ^不同的參數(shù)組合來獲取更精確的內(nèi)存信息。以下是 free 的一些常用選項(xiàng)及其組合使用方法:

5.1. 常用選項(xiàng)

  • -b:以字節(jié)(bytes)為單位顯示內(nèi)存信息。
  • -k:以千字節(jié)(kilobytes)為單位顯示內(nèi)存信息。這是默認(rèn)單位
  • -m:以兆字節(jié)(megabytes)為單位顯示內(nèi)存信息。
  • -g:以千兆字節(jié)(gigabytes)為單位顯示內(nèi)存信息。
  • -h:以人類可讀(human-readable)格式顯示內(nèi)存信息,自動選擇合適的單位(B、KB、MB、GB)。
  • -t:顯示內(nèi)存和交換分區(qū)的 總計(jì) 信息。

使用 -t 選項(xiàng)時(shí),free 會額外添加一行 Total,顯示物理內(nèi)存和交換分區(qū)的總和。

free -h -t

輸出結(jié)果:

              total        used        free      shared  buff/cache   available
Mem:            31G        9.0G         12G        326M        9.9G         21G
Swap:          7.9G        3.9G        4.0G
Total:          39G         12G         16G

-s [秒數(shù)]:每隔指定的時(shí)間間隔(以秒為單位)重復(fù)顯示內(nèi)存信息,對于持續(xù)監(jiān)控內(nèi)存使用情況特別有用。

例:每隔 2 秒打印一次內(nèi)存使用情況:

free -s 2

輸出結(jié)果:

              total        used        free      shared  buff/cache   available
Mem:            31G        9.0G         12G        326M        9.9G         21G
Swap:          7.9G        3.9G        4.0G

              total        used        free      shared  buff/cache   available
Mem:            31G        9.0G         12G        326M        9.9G         21G
Swap:          7.9G        3.9G        4.0G
……

-c [次數(shù)]:與 -s 選項(xiàng)一起使用,用于指定重復(fù)顯示的次數(shù)。

例:每隔 2 秒顯示一次內(nèi)存使用情況,總共顯示 5 次:

free -h -s 2 -c 5
  • -w:顯示內(nèi)存的額外列, 現(xiàn)代系統(tǒng)的默認(rèn)輸出已經(jīng)相對完整,-w 選項(xiàng)的作用不明顯, 默認(rèn)輸出已經(jīng)是寬模式。
  • -l: 顯示低端和高端內(nèi)存的詳細(xì)統(tǒng)計(jì)信息。在 32 位系統(tǒng)上,它能提供有用的信息,但在 64 位系統(tǒng)上,它的作用可能不大,輸出的低端和高端內(nèi)存數(shù)值可能相同。

6.交換分區(qū)(Swap)的清除與影響

6.1. 交換分區(qū)可以清除嗎?

交換分區(qū)(Swap)可以手動清除(即關(guān)閉交換分區(qū))。在某些情況下,想要釋放硬盤空間或調(diào)整系統(tǒng)性能時(shí),可能需要臨時(shí)關(guān)閉交換分區(qū)。

在 Linux 中,交換分區(qū)可以通過以下命令來清除(關(guān)閉):

sudo swapoff -a

swapoff -a:這個(gè)命令會關(guān)閉系統(tǒng)中所有的交換分區(qū)和交換文件。所有在交換分區(qū)中的數(shù)據(jù)會被遷移回物理內(nèi)存。如果物理內(nèi)存不足,可能會導(dǎo)致系統(tǒng)性能下降,甚至進(jìn)程崩潰。

6.2. 清除交換分區(qū)的影響

交換分區(qū)是物理內(nèi)存的延伸,當(dāng)內(nèi)存不足時(shí),系統(tǒng)會將一些不常用的內(nèi)存頁寫入交換分區(qū)。如果清除(關(guān)閉)交換分區(qū),系統(tǒng)會嘗試將這些內(nèi)容重新加載回物理內(nèi)存。如果物理內(nèi)存足夠多,通常不會有太大問題,但如果內(nèi)存不足,可能會導(dǎo)致以下影響:

  • 內(nèi)存不足:如果物理內(nèi)存不足,關(guān)閉交換分區(qū)后可能會導(dǎo)致系統(tǒng)內(nèi)存用光,進(jìn)而引發(fā) OOM(Out of Memory,內(nèi)存溢出) 事件。Linux 內(nèi)核中的 OOM 殺手(OOM Killer)會強(qiáng)制終止一些進(jìn)程,從而釋放內(nèi)存空間。可能導(dǎo)致某些重要的應(yīng)用程序被意外終止。
  • 系統(tǒng)變慢或無響應(yīng):在內(nèi)存不足時(shí),交換分區(qū)可以緩解內(nèi)存壓力。如果沒有交換分區(qū),當(dāng)物理內(nèi)存用盡時(shí),系統(tǒng)可能會變得非常緩慢,甚至無響應(yīng)。
  • 性能提升或下降:在某些情況下,關(guān)閉交換分區(qū)可以提升性能,當(dāng)系統(tǒng)依賴交換分區(qū)時(shí),因?yàn)橛脖P(或 SSD)的速度遠(yuǎn)低于物理內(nèi)存。如果系統(tǒng)頻繁使用交換分區(qū),性能會顯著下降,因此關(guān)閉交換分區(qū)可以強(qiáng)制系統(tǒng)使用更快的物理內(nèi)存。但只能在物理內(nèi)存充足的情況下才有效。

6.3. 重啟后交換分區(qū)會自動清除嗎?

在大多數(shù) Linux 系統(tǒng)中,交換分區(qū)在重啟后不會被自動清除,而是會自動重新啟用。這是因?yàn)樵谙到y(tǒng)啟動時(shí),/etc/fstab 文件中定義了需要掛載的交換分區(qū)或交換文件。系統(tǒng)啟動時(shí)會根據(jù)這個(gè)文件自動啟用交換分區(qū)。

可以通過以下命令查看系統(tǒng)中當(dāng)前啟用的交換分區(qū):

sudo swapon --show

輸出結(jié)果:

NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition 7.9G 3.9G   -1

  • /dev/dm-1 是一個(gè)邏輯卷管理器(LVM)設(shè)備,作為交換分區(qū)使用。
  • partition 表示該交換空間位于磁盤上的一個(gè)分區(qū),而非文件。
  • 7.9G 是該交換分區(qū)的總大小。
  • 3.9G 是當(dāng)前已使用的交換空間,表明系統(tǒng)內(nèi)存壓力較大,部分?jǐn)?shù)據(jù)被寫入了交換分區(qū)。
  • -1 是交換分區(qū)的優(yōu)先級,表示它的默認(rèn)優(yōu)先級較低(可以調(diào)整)。

6.4. 如何永久禁用交換分區(qū)

如果想讓系統(tǒng)在重啟后不再啟用交換分區(qū),可以編輯 /etc/fstab 文件并注釋掉(或刪除)與交換分區(qū)相關(guān)的行。

打開 /etc/fstab 文件:

sudo vim /etc/fstab

找到類似于以下內(nèi)容的行(具體的設(shè)備名稱可能不同):

/dev/sda2 swap swap defaults 0 0

注釋掉這一行(在行前加上 #):

# /dev/sda2 swap swap defaults 0 0

保存并退出文件。

重啟系統(tǒng)后,交換分區(qū)將不會再自動啟用。如果希望再次啟用交換分區(qū),可以取消該行的注釋,或者手動運(yùn)行以下命令啟用:

sudo swapon -a

6.5. 如何手動清除交換分區(qū)

如果希望在系統(tǒng)運(yùn)行的過程中手動清除交換分區(qū),可以通過以下步驟實(shí)現(xiàn):

關(guān)閉交換分區(qū):

sudo swapoff -a

清除所有交換分區(qū)中的數(shù)據(jù),并將其數(shù)據(jù)移回物理內(nèi)存。

如果想要釋放交換分區(qū)的空間(如刪除交換文件),可以在關(guān)閉交換后刪除對應(yīng)的交換分區(qū)或交換文件。

  • 若使用交換分區(qū),可以通過 fdiskgparted 刪除交換分區(qū)。
  • 若使用交換文件,可以刪除該文件:

如果不想永久禁用交換分區(qū),只是臨時(shí)清除,可以在需要時(shí)重新啟用:

sudo swapon -a

6.6. 總結(jié)

  • 清除交換分區(qū)(swapoff) 是可以的,如果物理內(nèi)存不足,關(guān)閉交換分區(qū)可能導(dǎo)致系統(tǒng)性能下降或進(jìn)程終止。
  • 重啟后交換分區(qū)不會自動清除,它會根據(jù) /etc/fstab 文件中的配置重新啟用。
  • 永久禁用交換分區(qū),可以編輯 /etc/fstab 文件并注釋掉與交換分區(qū)相關(guān)的行。
  • 手動關(guān)閉交換分區(qū)后,系統(tǒng)會將交換分區(qū)中的數(shù)據(jù)移回物理內(nèi)存。如果物理內(nèi)存不夠,可能會引發(fā) OOM 事件,導(dǎo)致進(jìn)程被強(qiáng)制終止,所以生產(chǎn)環(huán)境要慎用。
  • 物理內(nèi)存充足的情況下,禁用交換分區(qū)可能會提高系統(tǒng)性能,因?yàn)闇p少了使用較慢的磁盤 I/O。交換分區(qū)提供了額外的緩沖,防止內(nèi)存耗盡,所以禁用操作需要根據(jù)具體情況決定。

7. 小結(jié)

free 命令是 Linux 系統(tǒng)中監(jiān)控內(nèi)存使用情況的常用工具。理解 free 命令輸出中的各個(gè)字段,尤其是 usedbuff/cacheavailable,對于正確評估系統(tǒng)內(nèi)存狀況至關(guān)重要。

核心要點(diǎn):

  • 物理內(nèi)存:包括總內(nèi)存、已使用內(nèi)存、空閑內(nèi)存、共享內(nèi)存、緩存/緩沖內(nèi)存,以及可用內(nèi)存。
  • 交換分區(qū):當(dāng)物理內(nèi)存不足時(shí),系統(tǒng)會將部分?jǐn)?shù)據(jù)交換到硬盤上的交換分區(qū)。過度使用交換分區(qū)會影響系統(tǒng)性能。
  • 內(nèi)存使用率計(jì)算:排除緩存和緩沖的內(nèi)存后,內(nèi)存使用率會更準(zhǔn)確地反映系統(tǒng)的實(shí)際壓力。
  • free的其他命令選項(xiàng)free 提供了多種選項(xiàng)來滿足不同的內(nèi)存監(jiān)控需求,組合使用這些選項(xiàng)可以幫助我們更加靈活和全面地監(jiān)控系統(tǒng)內(nèi)存。

到此這篇關(guān)于深入理解Linux內(nèi)存管理之free命令的使用的文章就介紹到這了,更多相關(guān)Linux free命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux curl命令詳解及實(shí)例分享

    linux curl命令詳解及實(shí)例分享

    curl命令使用了libcurl庫來實(shí)現(xiàn),libcurl庫常用在C程序中用來處理HTTP請求,curlpp是libcurl的一個(gè)C++封裝,這幾個(gè)東西可以用在抓取網(wǎng)頁、網(wǎng)絡(luò)監(jiān)控等方面的開發(fā),而curl命令可以幫助來解決開發(fā)過程中遇到的問題。
    2014-08-08
  • windows apache多端口虛擬主機(jī)配置方法

    windows apache多端口虛擬主機(jī)配置方法

    有很多朋友喜歡在windows下使用apache作為web服務(wù)器,有時(shí)候想用非80端口提供服務(wù),因?yàn)槲磦浒赣蛎际欠饬?0端口,提供下載的時(shí)候可以用別的端口了,這里簡單分享下,方便需要的朋友
    2013-03-03
  • Linux命令rm如何刪除名字以“-”開頭的文件

    Linux命令rm如何刪除名字以“-”開頭的文件

    Linux中,命令的解析機(jī)制非常靈活,它會根據(jù)命令的開頭字符來判斷是否需要執(zhí)行命令選項(xiàng),對于文件操作命令(如rm、ls等),系統(tǒng)默認(rèn)會將命令開頭的某些字符解釋為命令的選項(xiàng),而不是實(shí)際的操作參數(shù),系統(tǒng)根本不把它當(dāng)成普通文件
    2025-09-09
  • Linux使用shell腳本定時(shí)刪除歷史日志文件

    Linux使用shell腳本定時(shí)刪除歷史日志文件

    這篇文章主要介紹了Linux使用shell腳本定時(shí)刪除歷史日志文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Linux系統(tǒng)之a(chǎn)uthconfig命令的使用解讀

    Linux系統(tǒng)之a(chǎn)uthconfig命令的使用解讀

    authconfig是一個(gè)用于配置Linux系統(tǒng)身份驗(yàn)證和賬戶管理設(shè)置的命令行工具,主要用于RedHat系列的Linux發(fā)行版,它提供了一系列選項(xiàng)來啟用和配置LDAP、Kerberos、NIS等多種認(rèn)證機(jī)制,并可以根據(jù)需要調(diào)整系統(tǒng)如何處理用戶認(rèn)證、賬戶信息檢索等任務(wù)
    2025-03-03
  • Linux磁盤掛載、分區(qū)、擴(kuò)容操作的實(shí)現(xiàn)方法

    Linux磁盤掛載、分區(qū)、擴(kuò)容操作的實(shí)現(xiàn)方法

    這篇文章主要介紹了Linux磁盤掛載、分區(qū)、擴(kuò)容操作的實(shí)現(xiàn)方法,詳細(xì)的介紹了這些基礎(chǔ)概念及其實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • 在CentOS7系統(tǒng)上編譯安裝MySQL 5.7.13步驟詳解

    在CentOS7系統(tǒng)上編譯安裝MySQL 5.7.13步驟詳解

    本篇文章主要介紹了在CentOS7系統(tǒng)上編譯安裝MySQL 5.7.13步驟詳解,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • 解決Linux中ifconfig和addr查看不到ip問題

    解決Linux中ifconfig和addr查看不到ip問題

    這篇文章主要介紹了解決Linux中ifconfig和addr查看不到ip問題,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Ubuntu搭建Eclipse+JDK+SDK的Android開發(fā)環(huán)境

    Ubuntu搭建Eclipse+JDK+SDK的Android開發(fā)環(huán)境

    本篇文章主要介紹了Ubuntu搭建Eclipse+JDK+SDK的Android開發(fā)環(huán)境,有興趣的同學(xué)可以了解一下。
    2016-11-11
  • linux 分區(qū),格式化,掛載的命令詳細(xì)介紹

    linux 分區(qū),格式化,掛載的命令詳細(xì)介紹

    這篇文章主要介紹了linux 分區(qū),格式化,掛載的命令詳細(xì)介紹的相關(guān)資料,這里對命令進(jìn)行了詳解并附簡單實(shí)例說明該如何實(shí)現(xiàn),需要的朋友可以參考下
    2016-11-11

最新評論

肇庆市| 堆龙德庆县| 黑河市| 滦平县| 那坡县| 白城市| 济源市| 呼和浩特市| 夏津县| 宣恩县| 四会市| 饶阳县| 宜宾市| 洪雅县| 金秀| 保山市| 鄂伦春自治旗| 武强县| 东方市| 宁晋县| 普宁市| 巴塘县| 金沙县| 崇明县| 军事| 曲水县| 安顺市| 绥芬河市| 桐梓县| 南投县| 邯郸市| 黄骅市| 灵台县| 新龙县| 永泰县| 新绛县| 南靖县| 沙田区| 宜兴市| 琼结县| 彭水|