很多朋友都會問,安卓手機記憶體(RAM)最大都到12GB了,為什麼iPhone的記憶體(RAM)的記憶體依然僅僅在4GB左右?這實際上是一個技術問題,涉及到iOS與安卓兩個作業系統的設計原理。
首先,安卓手機配置的大記憶體,這個是中國特色,也就是隻有中國國內銷售的安卓手機才會配置這麼大的記憶體。海外版的安卓手機記憶體基本和蘋果產不了太多。大家可以通過各種渠道查詢一下,我們就以華為P30為例,海外版的128GB的型號只標配4GB或6GB記憶體(RAM),而國行的華為P30,64GB硬碟(ROM)的型號卻配上了8GB記憶體(RAM);海外版的安卓手機128GB硬碟(ROM)標配4GB記憶體(RAM)比比皆是。在國內你幾乎找不到一款4GB+128GB配置的安卓手機,乍一看好像國行手機佔了很大便宜一樣,但這樣的配置知識國行安卓手機的無奈之舉。
先說國行安卓手機為什麼均配置大記憶體(RAM)。我們簡單舉一個例子,比如我們經常使用的即時通訊APP---微信(Wechat),首先你開啟微信登入賬號後,你手機上的微信APP就會和騰訊的伺服器保持一個長久的連線,你發一條訊息給你的朋友,這條訊息不是直接從你的手機上面傳送到他的手機上,而是你的手機將訊息發到騰訊伺服器,然後騰訊的伺服器再發給你的朋友。這是就有一個問題,如果你的朋友手機上的微信APP處於關閉狀態下,那麼即使騰訊伺服器把訊息傳送過去,他也接收不到,因為他的手機上的微信APP已經完全處於關閉狀態,已經和騰訊伺服器斷開連線,只有當他再次開啟微信的時候,才能恢復連線,然後才能收到訊息。也就是說,想要及時收到訊息,微信就不能完全關閉,需要留下一些執行緒1在後臺一直保持執行,一直和騰訊的伺服器保持連線,這樣如果收到訊息,系統才能及時啟動訊息機制進行提醒。
所以,國內安卓系統下,每一個APP都需要在後臺,也就是記憶體(RAM)裡面留下一些執行緒隨時準備接受外來資訊,也就是說你剛開啟手機什麼操作都沒有執行,你的手機上所有的APP的一部分執行緒已經悄悄啟動,進駐記憶體,而這些後臺啟動的執行緒是合法且無法關閉的,如果關閉的話使用者就無法及時收到訊息。同時我們不要小瞧了後臺執行緒的數量,一個APP在後臺裡執行10MB確實不多,但是如果100個APP(以64GB手機能裝100個APP為標準)加起來就要佔用2GB的記憶體。
因此,國內安卓手機的記憶體容量必須緊緊跟隨硬碟容量的遞增進行增加,也就是說硬碟(ROM)容量越大,能夠下載的APP越多,就需要更大的記憶體(RAM)來保證這些APP在後臺執行緒的正常執行。
我們接下來說iOS系統,那麼它為什麼就不需要非常大的記憶體呢?因為蘋果公司有自己的伺服器(其實谷歌實際上也有自己的伺服器,但國行手機無法使用),iOS系統必須搭配蘋果公司的伺服器才能正常執行。每一臺iOS系統裝置在進行聯網的時候,iOS系統首先會和蘋果的伺服器建立一個長連線。還是微信的那個例子,在iOS系統上,如果微信處於開啟的狀態下,那麼微信的執行邏輯與上述的安卓系統的執行邏輯一致,具體的差距是在關閉微信後。如果你的iPhone上的微信APP關閉了,將與騰訊的伺服器斷開連線,此時你的好友給你發來一條資訊,這條訊息先發給騰訊伺服器,這時騰訊伺服器發現你的iPhone上的微信APP沒有與伺服器進行連線,那麼它將會將這條訊息轉發至蘋果伺服器,然後蘋果伺服器收到訊息後再發送到你的iOS系統,iOS系統將對收到的訊息及時作出提示。整體來看這樣的流程看似是多了一個步驟,但帶來的好處是你的iPhone上的微信APP可以完全關閉,蘋果伺服器會一直保持接收訊息,再將訊息傳送給iOS系統,最後iOS系統作出提醒。因此你的iPhone就不需要留下多餘的執行緒已用來接收訊息。(其實簡單來說,就是你的訊息是系統進行推送的,而不是APP進行推送的)
這樣一來,iPhone的記憶體就不需要跟隨者硬碟容量一起遞增,因為即使APP完全關閉,也不影響手機即使接收訊息。在加之iOS系統實際上不支援真正意義上的後臺執行(僅支援後臺聽歌、下載、導航等有限的幾種操作,如果一個APP進入後臺,10分鐘內沒有被喚醒,系統將自動將其關閉,只留下關閉前的截圖,這就是所謂的墓碑機制),所以iPhone的這些記憶體絕大部分時間其實只為一個APP服務。一個APP使用4GB的記憶體(RAM)真的是綽綽有餘。
以上就是為什麼iPhone可以使用小記憶體(RAM)的主要原因了,同時也是為什麼說iPhone更加安全、注重隱私的原因了。iPhone上的APP如果都關閉了,那就是所有APP的執行緒真的都關閉了;安卓系統的手機(特指國行手機)由於每一個APP都可以在後臺留存一些執行緒進行執行,有的無良的APP甚至是手機廠商不僅僅會留下接收訊息的執行緒,甚至會留下開啟攝像頭或者麥克風的執行緒,偷偷的收集使用者資料,而且這些執行緒本就是系統程式碼層面的,使用者無法關閉。
最後,我們再簡單說一下海外版安卓手機(非國行)為什麼也不用配置大記憶體,其實道理很簡單,只因海外版的安卓手機可以使用谷歌的伺服器(前段時間安卓停止對華為授權事件,實際上是谷歌不讓海外版華為手機接入谷歌伺服器而已),而使用了谷歌伺服器,推送機制就變得和iOS系統一樣,因此就不需要後臺有APP自己留存的執行緒,谷歌伺服器會幫各種APP接收訊息。由於眾所周知的原因,國行手機使用者無法連線谷歌伺服器,如果想要APP及時接收訊息,各品牌手機系統(如MIUI系統、EMUI系統、Flyme系統、Funtouch系統、Color OS系統、Smartisan T1系統等)開發者也只能使用常駐後臺的辦法。而讓APP執行緒常駐後臺,則需要大量的記憶體進行支援,那麼國內的安卓手機只能夠增加記憶體進行支援。
目前,國內的APP因執行緒在後臺留存的問題讓國內的安卓生系統生態烏煙瘴氣、亂七八糟、紛繁至極。很多手機品牌均考慮過解決方案,比如小米推出自己的推送服務,華為也有自己的推送服務,但效果均微乎其微,最主要的原因是沒有開發者願意配合他們,一是開發者配置APP需要每個廠商都去對接,這樣會提升開發成本和維護成本;二是APP的開發商也不願意放棄常駐後臺而帶來的某些利益。
面對伺服器的問題,比較值得期待的是“安卓推送聯盟”。由工信部牽頭,運營機制和iOS系統的推送原理差不多,如果能夠全面使用就可以完美的解決上述問題。這一套現在還在測試階段,目前很多大的手機品牌均已入駐,我相信未來可期。