運行app的機制不一樣。

-----IOS-----

在iOS中,撇開聯動內存和可用內存不講,所有在內存里的程序都是被標記為活躍內存或者非活躍內存的。

活躍內存可以先簡單理解為正在前台運行的軟體以及剛退出不久的軟體所佔用的內存,這些數據是當前最活躍的(讀寫頻率最高的)。

而非活躍內存即是系統記錄的你經常使用的軟體所佔用的內存,當前處理器並沒有讀取它們,但它們仍然被放在內存里處於「待命」狀態,方便你下一次使用這些軟體時處理器能直接從內存讀取數據,而不必花費更多時間先從外存調到內存再讀取。

重點在這,當iOS檢測到你當前運行的軟體需要更多活躍內存時(實際上軟體向處理器請求更多內存),系統會選擇性地釋放掉後台軟體佔用的非活躍內存,轉而提供給當前軟體。如何釋放是根據你的使用習慣來定,比如你經常用QQ,其次是微信。那麼當前台內存不足時系統會優先釋放掉微信佔用的內存,若還不夠則繼續釋放QQ所佔用的內存。

可以假設,如果有個軟體佔用的內存大到要佔滿整個RAM,那麼系統則會釋放掉所有非活躍內存全部提供給這個軟體使用。這便是為何你不用擔心玩遊戲什麼的會因為內存不足而卡頓了,因為只要這個遊戲有需要,就算是需要所有內存系統都會馬上提供給你,不過你若不玩這遊戲了那這些內存又會馬上提供給其他程序。

這種內存釋放機制是有「預見性」的,並非只在內存不足時臨時釋放。iOS會根據你的使用習慣等數據來分析,在你打開一個軟體時立即準備足夠內存供其使用,若該軟體運行時又需要更多內存才會臨時釋放更多。iOS7甚至能根據你的使用習慣來預先載入常用軟體,所以iOS用的時間越長就越順手。(當然,記錄用戶使用習慣這種特性並不是只有蘋果才有)

而且iOS的內存管理十分嚴格,任何第三方App都沒有許可權直接調用設備上的硬體,也就是說內存分配與釋放都是處理器說了算,任何第三方軟體都沒有許可權去佔用固定內存(除非越獄),不會出現例外。自然就不會像windows里一些不規範軟體那樣,程序已經關閉連但內存還一直占著。

這便是區別所在,iOS里所有第三方程序都不可能一直佔用內存,一旦系統需要更多的活躍內存,就會強制釋放後台非活躍內存提供給前台。而windows不同,一個在運行的軟體你若不關閉它就會一直在內存里運行。

既然iOS里的程序不可能一直占著內存,那iOS豈不是沒有「後台運行」這一說法了么?iOS也的確不能後台,不像windows那樣能一邊前台看著電影一邊後台干著其他事情。

事實上,在iOS內,當一個軟體從前台轉入後台後5秒內便會完全停止運行,極少數特殊軟體能運行10秒,某些需要後台下載功能的軟體在轉入後台後也最多繼續下載10分鐘。這就是某種意義上所謂的的「偽後台」。

我們現在用著的後台功能大概就是這麼個尿性。這裡樓主要借用一下Windows phone里的一個名詞——墓碑機制。

何為墓碑機制?好比大家能從樓主的墓碑上了解到樓主活著時是個什麼鳥樣,但樓主這個鳥人其實已經掛了。也就是說當一個程序被系統從內存移除後,系統允許這個程序給自己立個「墓碑」,記錄自己「生前」的樣子,等你要讓這些程序「復活」的時候,系統會照著它墓碑上那鳥樣給他重新載入到內存里去。「墓碑」狀態下的程序們不會佔用CPU,不會佔用內存,甚至不會產生功耗。你們也能稱之為「後台掛起」,差不多那個意思。

這就是為什麼你長時間不用瀏覽器後再打開它時,你會發現頁面重新載入了一次但網頁並沒有刷新,也是為什麼iOS的後台功能需要軟體的支持才能實現。iOS就是用這種方式實現的後台,同時又保證內存的。

綜上所述,在iOS這樣的內存管理機制下,你完全不必擔心軟體會因為分配到的內存不足而卡頓,因為任何軟體被放在前台時都有許可權向處理器要求盡量多的內存。

所以在iOS里,你完全沒有必要去手動清理後台程序來釋放內存,iOS會自動釋放。相反iOS比你更「聰明」,它知道該釋放哪些程序的內存,何時釋放,釋放多少,而自己手動清理內存完全是多此一舉。

------安卓------

首先大家要知道Android系統是基於Linux 2.6內核開發的開源操作系統。linux系統的內存管理有其獨特的動態存儲管理機制。不過Android系統對Linux的內存管理機制進行了優化,Linux系統會在進程活動停止後就結束該進程,而Android把這些進程都保留在內存中,直到系統需要更多內存為止。

這些保留在內存中的進程通常情況下不會影響整體系統的運行速度,並且當用戶再次激活這些進程時,提升了進程的啟動速度。如果你懂java,就會更容易理解Android系統的內存管理機制。與java的垃圾回收機制類似,系統有一個規則來回收內存。進行內存調度有個閾值,只有低於這個值系統才會按一個列表來關閉用戶不需要的東西。Android系統有六類進程:前台進程、可見進程、次要服務、後台進程、內容供應節點、空進程。

對於高手而言可以用MinFreeManager之類的軟體進行進程管理,分別為六類進程設定不同的閾值來操縱系統的內存分配機制。不過對於一般用戶而言,Android系統默認的分配機制已經可以滿足使用需要,因此也不需要再去調整。對於一些內存很低的低端Android機而言,系統默認的內存分配機制無法實現很完善的內存調配。所以在運行大型遊戲時需要先清理一下內存。有些機油都反應說後台掛著程序很費電,事實上Android的應用在被切換到後台時,它其實已經被暫停了,並不會消耗cpu資源,只保留了運行狀態。

至於QQ、音樂播放之類的程序可以在後台運行,是因為這些程序在後台開啟了服務,而服務可以後台運行,所以沒有帶服務的應用在後台是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,下次啟動程序時,會更快,因為不需要讀取界面資源。


首先第二個題問是個偽命題。

「蘋果100多兆內存相當於安卓的多少」這個問題是個偽命題。

內存大小,只要廠商不虛標,他的大小是放諸四海皆準的標準。蘋果100兆=安卓100= Windows的100兆。不同的是跑的程序不一樣,優化不一樣,所以面對用戶所反應出的使用體驗也不一樣。

你應該是要問:「蘋果100兆內存所達到的用戶體驗,安卓需要多少內存才能達到同樣的用戶體驗?」

emmm……在我看來這個東西問題沒法回答,從表面看安卓廠商對系統的調教不同,所反應出的直觀體驗不同。從系統層面看,兩者用的不同的邏輯結構,編程語言。無法形成一個標準去衡量然後得出一個確切的結果。所有的比較,只是人表象上的感受,一千個人有一千個感受。說不清楚。


然後再說第一個問題:為什麼,蘋果的運行內存遠少於安卓,且空閑內存較少,還不卡?

我這個半吊子水平還真講不清這個問題。

只知道4大不同造就了這種情況

1.使用的編程語言不同。

被評論區撅慘了。我都說了我是個半吊子水平。本著嚴謹的態度修改回答。安卓什麼語言我也不知道,蘋果什麼語言我也不知道。反正就是iOS那個執行效率高就完了。

2.程序處理邏輯不同。太複雜自認講不清,不講了,知乎大神很多,這種回答也很多,感興趣去找吧。

3.內存管理機制不同。其他答主講的很清楚了,就不再贅述。

4.安卓陣營軟體雜亂無章,管理混亂。國外可以使用Google商店中的軟體,質量要好一些,而國內的安卓軟體呢?各立山頭,單是什麼手機廠商的應用商店的就一大堆,小米應用商店,魅族應用商店,華為應用商店這還不算騰訊的應用寶,豌豆莢等等亂七八糟的東西。

反觀iOS,就一個app store,而且管理極其嚴格。有的軟體還要收費,軟體質量很高。這點也是iOS的精髓所在。

半吊子水平臨時能想到的就這些了,如有錯誤歡迎指正,如有疏漏歡迎補充。


瀉藥

真的,9102年看著這種問題我就想笑

不是,兩種系統都不是一個原理好伐

第一是優化,大部分手機都能無痛更新到最新版本,而且是同步更新,掰著手指數都能數明白有多少設備需要資瓷一下


iPhone的內存,也就是64G、128G那個,基於NVMe,讀寫性能秒安卓旗艦幾條街


你真以為每次A系列處理器官方不說主頻多少就是菜不敢說?A11有多恐怖心裡沒點數吧?


iPhone也沒有流氓軟體搞自啟

所有軟體(特定需求如VOIP類和音樂類將會保留後台,有些下載任務iOS會單開一個進程)都會在切到後台時被凍結,3G運存分配給系統之後基本都是前台軟體的了。

在國內沒有FCM的生態下,app想推送通知要麼接入各家推送服務,要麼用盡各種奇技淫巧保留後台。所以一條通知就伴隨著血和淚的系統與軟體的鬥爭

有條消息來了,一個聲音高叫道

某Q:給我自啟!!!我要留守後台!

某系統衛士(就是你emui):GTMD,沒門,殺!(某Q進程被殺,同門師弟某信聽到了這個消息)

某信:WDNMD!Q兄!等著,我給你報仇!(開始全家桶輪流喚醒)

眾多全家桶內軟體開始了輪流自啟,喚醒,搶佔內存資源

但是隔壁家FCM和iOS的APNs就是另一道風景了

來了一條通知……

伺服器告訴FCM或APNs:叮~~~

APNs/FCM:xxxxgram,起床了!

xxxxgram:你有一條消息!

APNs/FCM:辛苦你了,睡吧。

xxxxgram:噢好~~(quit)

(但其實很多時候軟體都沒啟動,僅僅就是APNs或者FCM顯示一條消息罷了)

詳見


X-BOX one的硬體配置 PS4的硬體配置

都很差的!畢竟售價才就2000!

那為什麼可以流暢運行4A大作

而8000甚至更貴的電腦,有時候表現還沒有2000的遊戲機表現好呢???

優化!優化!優化!

優化很重要的,特別是量身定做的優化!

這種優化是可以很大程度彌補硬體不足的!

iOS的軟體,就是專門為了iPhone而優化的!不像安卓機型和系統的五花八門,iPhone的機型寥寥無幾!而且現在部分主流APP已經不支持iOS9及以下了!

優化再好,也掩蓋不了Apple想賺更多錢的心!


當然 最後我還是選擇了負優化的索大法!


去了的喬布斯說過,水果機賣的的是用戶體驗和軟體,手機不是重點。


推薦閱讀:
相关文章