當前位置: 華文問答 > 數位

加大記憶體可以提升體驗,iPhone 為什麽不加大記憶體?

2020-04-12數位

這實際上是一個技術問題,涉及到iOS與安卓兩個作業系統的設計原理。

首先,安卓機上大記憶體,這是個中國特色,也就是說只有中國國內銷售的安卓機才會上這麽大的記憶體,海外版的安卓機主流記憶體基本和蘋果差不了太多。圖我就不貼了,大家可以自己去查一下,華為的P30,海外版的128G硬碟的型號只配4G或6G記憶體,而中國版的P30,64G硬碟的型號卻配上了8G記憶體;海外版的安卓機,128G硬碟配4G記憶體比比皆是,簡直不要太多,但在國內,你幾乎找不到一款128G硬碟配4G記憶體的安卓機。這樣乍一看好像我們得了便宜,可其實,這是國產安卓生態的無奈之舉。

先說國內安卓機為什麽上大記憶體吧。舉一個例子,比如我們常用的微信這個APP,首先你開啟微信登入帳號後,你手機上的微信APP就會和騰訊的伺服器保持一個長久的連線,你發一條訊息給你朋友,這條訊息不是直接從你的手機上發到他的手機上的,而是你的手機將訊息發給了騰訊的伺服器,然後騰訊的伺服器再發給你朋友。這個時候就有一個問題,如果你朋友手機上的微信APP處在關閉狀態下,那麽即使騰訊伺服器把訊息發過去了,他也收不到,因為他的手機上微信APP已經完全關閉了,已經和騰訊伺服器斷開連線了,只有當他再次開啟微信的時候,連線恢復,他才能收到那條資訊。也就是說,想要及時收到訊息,那麽微信這個APP就不能完全關閉,需要留下一些執行緒在後台一直保持執行,一直和騰訊的伺服器保持接連,這樣一旦收到訊息,系統才能及時啟動訊息機制提醒你。

所以,國內安卓系統下,每一個APP,都需要在後台(也就是記憶體裏)留下一些執行緒隨時準備接收外來資訊,也就是說你剛開啟手機還啥都沒幹,你手機上所有APP的一部份執行緒已經悄悄啟動,進駐記憶體,而這些後台啟動的執行緒是無法關閉的,因為是合法的,關閉的話使用者就無法及時收到訊息。另外,不要小看這些後台執行緒的數量,一個APP在後台裏留十幾二十MB確實不多,但100個APP(64G硬碟的手機就能裝100個APP)加起來就要吃掉將近2G的記憶體!

因此,國內安卓機的記憶體容量必須跟著硬碟容量遞增,硬碟容量越大,能下的APP就越多,就越需要更大的記憶體來保證這些APP留在後台的執行緒正常執行。

再說iOS,它為啥就不需要大記憶體呢?因為蘋果有自己的伺服器(谷歌實際上也有自己的伺服器,但國內不能用,下面會說)。iOS的這個系統,必須搭配蘋果公司的伺服器才能正常執行。每一台iOS裝置在聯網的時候,iOS系統首先會和蘋果的伺服器建立一個長連線。

還是微信那個例子,在iOS上,如果微信處在開啟狀態下,那麽邏輯還是和上述安卓的一樣,差距是體現在關閉微信後。如果你iPhone上的微信APP關閉了,會和騰訊的伺服器斷開,而這個時候,你朋友發了一條訊息給你,這條訊息先發給了騰訊的伺服器,這時騰訊伺服器發現你手機上的微信APP沒有和伺服器建立連線,那麽它會將這條訊息轉頭發給蘋果的伺服器,然後蘋果的伺服器收到後會發送給你的iOS系統,系統收到就能及時做出提醒。這樣實際上是多了一個步驟,但帶來的好處是你手機上的微信APP可以完全關閉,不需要留下多余的執行緒來接收訊息,因為蘋果的伺服器會一直保持接收訊息,然後將訊息發給手機系統,系統再做出提醒。

這樣一來,蘋果手機的記憶體就不需要跟著硬碟容量一起遞增,因為即使APP完全關閉,也不影響及時接收訊息。再加上iOS系統實際上不支持真正意義上的背景執行(僅支持後台聽歌、下載、導航等有限幾個操作,如果一個APP進入後台,10分鐘內沒被換到前台來,那麽系統就會將它關閉,只留下臨死前的一個截圖,所謂的墓碑機制),所以蘋果手機的這些記憶體絕大部份時間內其實只為一個APP(當前這個)服務,一個APP使用4G記憶體,真的是綽綽有余,有余到多的不能再多了。

插個題外話,都說蘋果手機安全,註重私密,也有這個原因,蘋果手機上的APP,如果關閉了,那就是真的全部執行緒都關閉了;而安卓,由於每一個APP都可以在後台留一些執行緒一直執行,有的無良APP甚至手機廠商,就不僅僅會留下接收訊息的執行緒,還會留下偷偷開啟網路攝影機或者麥克風的執行緒,去收集使用者數據,而這些後台的的執行緒,由於是系統程式碼層面的東西,使用者根本沒可能去關閉。

最後,說一下海外版安卓機為什麽也不上這麽大的記憶體,因為海外版安卓機可以使用谷歌的伺服器(前段時間鬧的沸沸揚揚的安卓停止對華為授權事件,實際上就是谷歌不讓海外版華為連線谷歌的伺服器了),而使用了谷歌的伺服器,推播機制就變得和iOS一樣了,就不需要有APP自己的執行緒留在後台了,谷歌的伺服器會幫APP們接收資訊。

而由於眾所周知的原因,國內安卓使用者是無法連線谷歌的伺服器的,那麽,APP要想及時接收訊息,開發者也只能使用常駐後台這個方法,而讓APP執行緒常駐在後台,需要大量的記憶體支持,那國內的安卓機就只好加大記憶體。那麽,誰來為這些多出來的記憶體買單呢?羊毛都出在羊身上,當然還是使用者,還是消費者。這就是我們國內安卓使用者的悲催之處,我們不僅要忍受私密的泄露,還要為這樣的行為買單。

目前,國內的APP駐留後台已經把國內的整個安卓生態搞的烏煙瘴氣、亂七八糟。其實好多大廠想過解決方案,比如小米推出自己的推播服務,華為也有自己的推播服務,但全都收效甚微。因為沒什麽開發者去配合他們,一來因為開發者適配的話需要一個廠一個廠去適配,提升了開發成本和維護成本,二來APP開發商也不願放棄常駐後台帶來的利益。

目前比較值得期待的,是安卓推播聯盟,這個聯盟是由工信部牽頭的,執行機制和iOS的推播原理差不多,如果能全面鋪開,可以解決上述問題,但這一套現在還在測試階段,還是個美好的願望,日後能不能全面鋪開還是前途未蔔。

所以,蘋果不上大記憶體,真不是廚子摳門,因為沒必要了,國內安卓機12G記憶體都打不過蘋果4G記憶體,為什麽?因為12G記憶體裏,很大一部份是留給國產APP常駐後台用的。

就是這樣。