我的內存都去哪里了?
在疫情期間,小編不得不待在家中遠程辦公。但變的是辦公方式,不變的是美創運維的7*24小時不間斷支持。

這不,一位客戶發來了一條消息:
客戶:張工,好像我這個數據庫服務器的內存使用率有點高啊,你幫我看看?
隨即發了個linux環境下的free -g的截圖過來:

小編一看,按照這個截圖的顯示,的確在總共62Gb的內存里,可使用內存只剩1Gb了。但是,我們也可以觀察到,cached顯示的是55Gb,我們再獲取了一下top命令的截圖:

那為什么cached的內存使用這么大呢?這樣的內存使用情況是正常的嗎?
要回答這些問題,我們需要了解一下buffer與cache的含義。buffer 和 cache 是兩個在計算機技術中被用濫的名詞,放在不同語境下會有不同的意義。我們這里都將其放在linux內存這個語境中解釋。
什么是buffer
在 Linux 的內存管理中,這里的buffer 指 Linux 內存的:Buffer cache,中文可以解釋為:緩沖區緩存。Buffer cache 主要是設計用來在系統對塊設備進行讀寫的時候,對塊進行數據緩存的系統來使用。
什么是cache
在Linux的內存管理中,這里的 cache 指 Linux 內存中的:Page cache,中文可以解釋為:頁面緩存。主要用來作為文件系統上的文件數據的緩存來用,尤其是針對當進程對文件有 read/write 操作的時候。在當前的系統實現里, page cache 也被作為其它文件類型的緩存設備來用,所以事實上 page cache 也負責了大部分的塊設備文件的緩存工作。
自動回收 cache機制
Linux 內核會在內存將要耗盡的時候,觸發內存回收的工作,以便釋放出內存給急需內存的進程使用。一般情況下,在內存壓力較大的情況下, buffer/cache 空間可以被釋放,以作為 free 空間分給相關進程使用。
但是由于要回收緩存必須保證 cache 中的數據跟對應文件中的數據一致,才能對 cache 進行釋放。所以在回收緩存時一般會造成IO使用較高的現象。因為內核要對比 cache 中的數據和對應硬盤文件上的數據是否一致,如果不一致需要寫回,之后才能回收。
所以一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容本來就是為了增加文件以及的讀寫速度。
人工觸發回收cache
除了系統自己觸發回收緩存機制外,我們也可以通過下面這個腳本來清理緩存:
1. 查看目前內存使用:

2. 執行sync同步數據,防止數據或操作丟失(重要),將未寫的系統緩沖區寫到磁盤中。包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













