首頁  >  問答  >  主體

内存管理 - Linux 内存占用总是很高为何依旧很流畅?

Linux 的内存显示经常会出现 90% 多已被使用,但系统依旧很流畅的情况,想知道:

  1. 有时候 CPU 占用率很低,但内存占用率很高,内存都被怎么用掉了?
  2. 系统依旧流畅,不会像 Windows 卡成翔,原理在哪里?
阿神阿神2745 天前1157

全部回覆(11)我來回復

  • 高洛峰

    高洛峰2017-04-17 12:03:47

    關於第一個問題,你可以看看這個 SF 答案,應該說的很清楚了。簡單地說,記憶體並沒有真正被用掉,而是被系統快取起來了,隨時可以被釋放出來使用。

    關於第二個問題,簡單回答是 Linux 下面的程式都比較有節操,沒有節操的程式已經沒人用了。如果 Windows 裡面沒有那麼多的 XX 衛士或 XX 助手的話,僅僅一個裸操作系統加上一些必要的程序,並且使用 SSD,也不會有什麼卡頓的感覺。

    回覆
    0
  • 阿神

    阿神2017-04-17 12:03:47

    誰說 Windows 會卡?我在虛擬機器裡用Windows,記憶體CPU 顯存都很緊張,記憶體只能分到4G,CPU 只有分到兩個核心四線程,顯存只有分到768M,開Chrone 玩3D 遊戲,從未覺卡(曾經那個遊戲把我舊電腦2G內存佔滿了,然後沒內存,崩潰!

    內存佔用高會卡的原因是,被迫使用虛擬內存,也就是與硬碟交換空間,硬碟,持續 IO,卡死你。

    並不是說記憶體佔用高一定會卡。只要不使用虛擬內存,例如即時回收了佔用的空間,就不會卡。

    就算使用虛擬內存,你硬碟夠快,也沒問題。 PCIe SSD 試試?

    你看 iOS,根本沒有虛擬內存,實體內存 1G,卡片嗎?只是常常遺失之前看過的網頁要重新載入罷了。


    另外,關於裝 XX衛士 卡成翔的原因,是 XX衛士 inline hook 了系統關鍵函數,KiFastCallEntry,這個函數太關鍵了,以至於XX衛士的響應速度成為了系統響應速度的上限。據說,有些安裝只要幾分鐘的軟體,在 Hook 了 KiFastCallEntry 之後,要長達幾個小時之久!

    這也是為什麼XX不完美支援Win7 x64的原因-PatchGuard導致XX難以像以前一樣無法無天。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 12:03:47

    如果你用一個命令列跑服務的系統去比一個桌面系統,顯然這是不公平的
    如果你看看ubuntu那個桌面什麼流暢度 再看看windows桌面什麼流暢度 我們再談下面的話題

    回覆
    0
  • 黄舟

    黄舟2017-04-17 12:03:47

    Linux會借用空閒的內存當作磁碟緩存, 磁碟資料快取會讓linux運行的更快,它永遠不會從程式中拿出內存,它沒有任何缺點,只是會混淆新手,如果你的應用程式需要更多的內存,他們會回收一部分用作磁碟資料快取的物理內存,返回給應用程序,這個過程不需要啟動交換,磁碟快取(Disk caching)是不能禁用的

    舉個簡單例子

    如果真要和windows比,其剩餘的記憶體大小為 +buffers/cache = 685544kb (680m左右)
    程式使用記憶體大小約 330m

    而不是 使用了 900M 剩餘100M

    buffer裡 73m用作區塊設備做快取(記錄檔案系統的metadata和tracking in flight pages )
    cached 裡 510m 用作快取檔案

    buffer和cached 隨時都可以騰出空間 給程式使用

    希望能採納~~

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 12:03:47

    說明:本回答與題目相關度50%,只是想為 Windows 正名!


    誰再說 Windows 卡成翔我跟誰急!

    i3 行動低電壓版 + 4G記憶體 + SSD 有圖為證:

    跑 win8.1 一點都不卡。有人會問,你開了幾個程式?
    正常情況下,我的任務欄是這樣的:

    PHPStorm、Chrome都是內存大戶,除了 PHPStorm 在新建項目索引檔時會卡一點外,平時並未有任何異常的卡頓,使用極其流暢。如果你的進程中有各類線上影片播放客戶端,各種所謂的安全防毒進程,不卡才怪!

    一直以為,Windows是給科學家用的,Mac OS X 是給藝術家用的。我自認為自己藝術修養不夠,又駕馭不了 Linux 桌面(在Linux桌面發行版折騰了一年,又退回來了),所以還是選 Windows。但若誰說 Windows 卡成翔我還是會急的,尼瑪你自己裝一大堆流氓軟體還怪 Windows 卡,你讓我怎麼辦?

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 12:03:47

    內存本來就是給人用的 內存可回收可再生 幹嘛不用?
    都是被win上的清理軟體給帶壞了 非要追求記憶體佔用率小

    回覆
    0
  • 阿神

    阿神2017-04-17 12:03:47

    在Linux中,雖然你看到記憶體佔用量很大,但實際上很大一部分都是cache。你可以使用

    free -m

    查看記憶體實際使用情況。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 12:03:47

    Linux 下記憶體是被快取了起來,而不是和win下被程式佔用的概念

    回覆
    0
  • 迷茫

    迷茫2017-04-17 12:03:47

    linux的記憶體管理不一樣,他會把一些用戶估計會用到的東西放在內存裡,以提高讀取速度,但是如果用戶需要這些被佔用的內存,會優先讓用戶使用。 。 。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 12:03:47

    我從來不用這個衛士那個助手,只用mse和一個輕量級的殺毒引擎。沒有ssd照樣不卡。
    卡的原因是那些流氓軟體一啟動恨不得子子孫孫全上陣把後台都佔滿,安卓上也是同理。

    回覆
    0
  • 取消回覆