macOS 和 Windows 哪個內存管理更先進?


是不是很多人用著最新版的macOS,然後拿xp在做比較啊?

但是就算xp也有prefetch啊。

你們真的有了解過兩個系統的內存管理策略嘛?還是說你們僅僅是看了蘋果的宣傳頁面,聽了果粉的人云亦云?

我不敢說哪個好,畢竟我只在虛擬機上跑過macOS。

但是我希望你們如果有windows的話,好好打開任務管理器看看,看看裡面的各個條目。

再打開資源監視器看看內存使用情況,滑鼠懸浮會有解釋顯示出來的。

win10RS也加入了內存壓縮,你們該不會以為絕大多數的windows還是xp吧?


mac號稱具有更先進的內存管理系統,但實際使用(跟bootcamp中的win類別)win更加流暢~


mac給我的感覺,各種看起來很高大上實際使用各種呵呵,要不是設計稿要用sketch還不如幹掉用Arch


我們限定條件 同樣的配置 使用同樣的比較占內存的軟體 相對來說windows會比mac使用更流暢一些 mac號稱自動管理非活躍內存 但是實際上當空閑內存用光了之後 還是比較卡


在MBP上玩windows,也在Laptop上玩Macintosh

軟粉,喬粉(只愛喬布斯時代的蘋果

先扔個結論吧:熟以為,兩者的內存管理都是基於各自系統的優化,沒有誰更先進直說(除非果粉強說macos就是屌,軟粉死磕windows內存管理黑科技)

無視操作系統對比內存管理優劣的行為

無異於拋開劑量談毒性

都是耍流氓!


===============

macOS內存構成:wired/active/inactive/free/swap,其中除了free都被歸為in use(在新版macOS里貌似是wired+active被稱作memory pressure)然後task monitor中顯示的百分比是以in use計算,貌似新版是以memory pressure計算
windows內存構成:hardware resevered/in use/modified/standby/free/pagefile,任務管理器以in use計算使用率。(先前版本的Windows task manger中會些cached/pagefile把modified+standby/pagefile寫在任務管理器和資源監視器中,WIndows 10添加了在task manager中的圖形化表示)

其中Windows下hardware reserved+in used=macos下的wired+active,hardware reserved和wired是兩個系統system kernel佔用,Windows下的hardware reserved不統計在task manager的內存總量,但是統計在resource manager中的內存總量里,macos直接吧wired寫在內存總量里,這部分沒啥好說的吧,很自然的統計

mac下的inactive和windows下的modified+standby是一樣的,modified是已提交修改但未寫入硬碟,standby是從硬碟中預讀出來的(Windows的perfetch服務,使用頻繁的文件借用內存存儲以減少硬碟IO提高響應速度)這部分兩個系統也是基本一樣的

兩個free就不說了

swap和pagefile,名稱不一樣而已,作用是一樣的,把使用率低的內存頁面在內存不足的時候借用硬碟存儲

當然swap/pagefile和inactive/modified+standby這兩部分具體什麼時候RAM/HD怎麼互相借空間上,兩個系統的內存調度演算法的問題了就是,但都是會在針對兩個操作系統的特性上做的不同的調教而已。

有人要說了,windows 10現在有compressed memory,用CPU換空間,那我要告訴你,mac也有,什麼時候有的我不知道,但是請在task monitor中的memory選項卡仔細看看,in used欄下有些應用的用量後面有個括弧,括弧內就是被壓縮的內容容量

所以說,這麼一看,大家所說的mac更能充分使用內存,只是統計方式的差異而已(就比如我現在任務管理器內存用量20%,如果換成mac的統計方式,那我的內存用量常年50%,多開倆程序就100%了),另外我前段時間用mac,由於mac換了新的統計方式,我日常的內存使用率也是30%左右而已啊,以舊的統計方式,也不過80%

而為啥mac用內存量普遍高於windows?系統運行時需要的資源不一樣(格式、數量都會影響),應用的載入方式(依賴庫調用時載入還是啟動時載入)等等很多原因造成的。就像你不能因為32位操作系統的開機內存用量低於64位操作系統就說32位操作系統的內存管理優於64位操作系統。

無論你是以mac能把內存佔滿為傲,還是以開機內存windows低於mac為傲,都別再對比了。真的沒太大差別。


談不上誰更先進,只是策略不同!

現代操作系統都是以頁為單位管理內存,當物理內存不足需要用更慢的大容量三級存儲做內存頁緩存的時候,任何系統都會卡頓!包括但不限於Windows,Linux(Android),Unix(MacOS)及其他非主流系統!

所以,買你能買得起的最多的內存才是硬道理!最少也是16G起步!不玩大型遊戲,不運行大型程序,可以降為8G。8G以上可以關閉頁面文件。不上網,可以降為4G。不運行主流操作系統,可以降為2G。

注意,這些估算是建立在不安裝360,百度,騰訊等國產流氓全家桶的基礎上的,如果你喜歡國產流氓,請乘2,這樣才不會2!


首先要破除幾個謠言

1. macOS 會使用全部的內存,而Windows不會,所以macOS更高效

無論是mac還是win,對於沒有被分配的物理內存都是處在既可以被分配給新程序,也可以用來加速舊程序啟動的。只不過在mac里這塊區域叫inactive,而win里被算作了free

2. windows用用硬碟作為虛擬內存,而mac沒有

無論是 win mac 還是 linux 都有類似的機制,在 mac 和 linux 里這個功能叫 swap,就是將暫時不用的內存頁轉入硬碟里,用來釋放物理內存的使用,好讓系統可以運行更多的程序。對於大型程序,這個功能是不可缺少的,因為有時候他們需要的內存比物理內存還大。

然後是正文

手上在用的是11年中的Macbook Pro 13",原配 HDD 自改 SSD+HDD+FusionDrive。在換成SSD之前,當物理內存用完的時候就會出現長時間卡頓,但換過SSD之後就完全沒有這種現象。

我想說,這完全是macOS的渣渣文件系統的鍋啊!在內存換頁的時候把整個系統完全阻塞了啊!為啥SSD就不卡?因為換頁快啊,不用等磁頭轉動啊!

至於為什麼windows不卡,只能說微軟大法好,在黑科技面前大家都得跪下叫爸爸。猜想可能是windows在換頁的時候不阻塞全局,或者不阻塞其他的kernel thread,CPU在硬碟讀寫的時候繼續跑。

好在蘋果終於出了新的文件系統…填了不少以前的坑,期待mac的更新吧。


有段時間 OSX 用著用著就突然特別的卡,把所有能退出的進程都退了,問題依舊,只能重啟(PS:至今還沒找到原因,可能是默認的文件描述符設置太低了

WIN 的話,打開任務管理器,一目了然


談何先進之說?操作系統內存管理方面的理論框架幾十年來有變化嗎?N級頁表,虛擬地址,線性地址,換頁演算法,這些有變過嗎?

基礎理論都沒變,無非就是實現的時候為了優化某一方面而做的一些工程化的「優化」。而這些優化,多多少少都是拆東牆補西牆。

題主拋開使用場景來說內存管理更先進純屬耍流氓。嵌入式裸機程序員自己管理內存,才是最先進的(智能)的內存管理。逃)

PS:macOS Windows看不到內核源碼,全從Linux內核內存管理的變化推出的結論。如有錯誤歡迎指出


當想到win nt是操作系統天神大衛卡特勒主導開發的時候,我就堅定的認為,沒有人能超越。

比爾蓋茨三顧茅廬去請大衛卡特勒的時候,大偉卡特勒直接對比爾說"微軟的軟體是垃圾",比爾說"所以我才需要你加入",然後這哥們被感動加入微軟,徹底改變了windows,席捲了全球,十億用戶。目前這位天神加入了xbox團隊。

人往往身在福中不知福,手中的mac的確漂亮,但是對比windows,他還是一個小系統。

另外對於系統方面,多參考另外一個神,Linus Tovalds, 他更加從工程角度去評價一個系統。從工程角度出發更加實際。所以linux內存管理也很好。


那一天你拿到了windows內核代碼,記得分享一下,大家一起學習。


差不多吧,win10內存管理也不差,差別更多是設計邏輯吧


感覺答非所問。。。(¬_¬)


這應該很適合我現在在做的事情

手上有 MacBook pro 2016 15寸 SSD 256G Mac系統 和一台 16G內存 128G SSD+60G SSD+ 1T HDD win10操作系統的台式機

運行的軟體非常吃內存吃內存吃內存

台式機的情況:輪流分配 50G 虛擬內存給 60G SSD 和 1T HDD

目測到的情況是:當物理內存用滿,便會向虛擬內存讀寫數據,在這中間也發生了內存壓縮,然後釋放物理內存,再繼續未完成的任務,類推。

從性能上說,虛擬內存寫入的速度 ssd 固然快,但是在讀取上這倆是相同,而且讀取不高於 5m (這是被分成多個小塊小文件嗎?),效率非常的低下,而直接導致了崩潰黑屏死機。

MacBook oro 的情況:不好意思,還沒測試。

有點答非所問的感覺∠( ? 」∠)_。


macOS是"The world"s most advanced OS"啊,還用說嗎?


macOS(most advanced computer OPERATING SYSTEM)


WIN在內存使用完以後會使用硬碟做虛擬內存,明顯卡頓(即使是SSD)。OSX只要你啟動應用就會載入進內存,並不會釋放,所以內存長期100%,但是OSX會自動管理活躍的內存,使用體驗流暢度高於WIN。


Mac OS的內存管理機制是類同於Unix和Linux的,屬於利用內存緩存來提供效率的,完全不同於Windows,應該來說比Windows的機制要先進。

Mac在偵測到系統內存數量之後,會根據內存大小把硬碟中常用的程序數據先讀入到內存中,作為緩存來提高讀取效率。也就是說,你插入多大的內存,它都會充分利用到這些內存,讀入合適比例的數據進去。


推薦閱讀:

OS X El Capitan 正式版本存在哪些缺陷和不足,以及兼容性問題?
OS X 系統 (Mac) 有哪些使用技巧?
MAC最佳中文簡體輸入法是什麼?
X11 是什麼?
Macbook Pro 用外接顯示器時,如何關閉筆記本屏幕,同時開蓋使用?

TAG:macOS | MicrosoftWindows | 內存管理 |