事情的起因是這樣的:我在尾巴小組( 數(shù)字尾巴最新版 3.0 客戶端中加入的興趣社交平臺 )發(fā)了條分享,“ 你的 iPhone 6 Plus 有我的卡嗎?—— 442 個 App,1G RAM 真心帶不動... ” 然后,就有不少用戶在評論中質(zhì)問道,“ 裝了 442 個 App,與你 1G RAM 有啥關(guān)系呀 ”。 于是就有了現(xiàn)在的這篇文章。感謝大家的批評指正,“ 你的 iPhone 6 Plus 有我的卡嗎?—— 442 個 App,1G RAM 真心帶不動... ”,我的這條分享在表述上確有問題。 在尾巴小組的這條分享本意想傳達(dá)“ 我為啥會在使用 iPhone 6 Plus 的過程中感受到了卡頓,原因包括裝了 442 個 App 以及機器本身的 1G RAM 等 ”。但正如用戶質(zhì)問的說法,“ iPhone 6 Plus 裝 442 個應(yīng)用與 1G RAM 有啥關(guān)系 ”,表達(dá)方和接收方在對核心信息的提取上出現(xiàn)了偏差。而我 iPhone 6 Plus 產(chǎn)生卡頓的原因也遠(yuǎn)非“ 機器本身的 1G RAM 以及裝了 442 個 App ”這樣的簡單說法就可概括。 需要說明的是,我所指的卡頓只是在一些應(yīng)用場景下有明顯感受,而在關(guān)閉所有后臺應(yīng)用并且不接入網(wǎng)絡(luò)的場景下,我的 iPhone 6 Plus 就比較流暢了。 下面,我將重點表述“ 我的 iPhone 6 Plus 為啥會這么卡 ”,中間也會穿插對于“ iPhone 6 Plus 裝 442 個應(yīng)用與 1G RAM 有啥關(guān)系 ”的一些思考。同樣需要說明的是,以下內(nèi)容更多是站在用戶分析,而非專業(yè)技術(shù)性解釋的視角。 首先,必須指出的是,自 2014 年 11 月初入手 iPhone 6 Plus( 128G ROM 版本,一直保持最新系統(tǒng) )至今,我就從來沒有在這臺設(shè)備上感受到「 運行很流暢、一點都不卡頓」—— 這一 iOS 設(shè)備廣為人知的重要特性。此前,在入手 iPhone 4S 后,我在很長一段時間中都有這樣的感受。 其次,就“ 我的 iPhone 6 Plus 為啥會這么卡 ”這個問題,包括兩個大的層面: 一、處于現(xiàn)在狀態(tài)( 包括但不限于裝有 442 個 App 這樣的形容詞 )的 iPhone 6 Plus,為啥比我抹掉所有內(nèi)容和設(shè)置( 即恢復(fù)出廠設(shè)置 )后的 iPhone 6 Plus 要卡頓?或者,我的 iPhone 6 Plus 為啥比把玩過的其它 iPhone 6 Plus 要卡頓? 二、同等條件下( 例如在恢復(fù)出廠設(shè)置、不接入網(wǎng)絡(luò)、均為同一版本系統(tǒng)的情況下 ),iPhone 6 Plus 為啥比 iPhone 6 更卡頓? 正是基于這兩個大的層面的對比,iPhone 6 Plus 之于我的卡頓印象會更加明顯。何況卡頓本身就是一個很主觀,并且具有對比性的表述。 先嘗試著解釋第二個層面的問題,畢竟這可能是讓我產(chǎn)生對 iPhone 6 Plus 卡頓印象的更深層次原因。上文亦有表述,“ 我從來沒有在 iPhone 6 Plus 上感受到「 運行很流暢、一點都不卡頓」,但在入手 iPhone 4S 后的很長一段時間中,我都有這樣的感受 ”。 究其原因,主要是 iPhone 6 Plus 首次采用的 1080P 顯示屏( 邏輯分辨率為 1242 × 2208 )以及 iOS 8 / 9 系統(tǒng)所致。 一種流行說法認(rèn)為,同等配置下( 例如均搭載 A8 芯片 ),分辨率更高的 iPhone 6 Plus 必然比 iPhone 6 要卡頓,蘋果 A8 芯片對于 1080P 顯示屏 iPhone 的優(yōu)化是個大問題。iPhone 6 Plus 在實際運行的過程中,我也隱約感受到了蘋果 A8 芯片的「 吃力感 」?;蛟S可以作為參照的是,史上最短命的 iOS 設(shè)備—— The new iPad,而我也在第一時間入手了這臺設(shè)備。 2012 年 10 月,在發(fā)布 The new iPad( 即第三代 iPad,搭載 A5X 處理器,為首款 Retina 顯示屏 iPad )七個月后,蘋果就頗為罕見地推出了搭載 A6X 處理器的第四代 iPad,第三代 iPad 同時停產(chǎn),成為史上最短命的 iOS 設(shè)備。 但我認(rèn)為 iOS 8 沒有對 1080P 顯示屏手機進(jìn)行很好的適配和優(yōu)化,可能是個更主要的原因。 就我使用 iPhone 6 Plus 這 1 年多的感受,在 iOS 8 系統(tǒng)上不管是后臺切換還是一些轉(zhuǎn)場動畫,都出現(xiàn)過明顯的掉幀和卡頓現(xiàn)象。iOS 8 是我從 iOS 4.3 開始接觸蘋果后,bug 最多的一代 iOS 系統(tǒng)。對第三方 App 的全面開放( 4000 多個 API )以及系統(tǒng)全局搜索的加入,也讓 iOS 8 系統(tǒng)底層經(jīng)歷了一場大變。 印象深刻的是,128G 版本的 iPhone 6 Plus 就曾曝出安裝應(yīng)用多于 700 個后會無限重啟的 Bug。亦有說法稱,頭幾批次的 iPhone 6 Plus ( 128G 版本 )在 ROM 硬件上存在問題。 進(jìn)入 iOS 9 時代,iPhone 6 Plus 上的系統(tǒng)性 Bug 少了,但系統(tǒng)級的卡頓現(xiàn)象依然存在,最明顯的就是后臺應(yīng)用的左右切換過程,依然欠缺順滑感。下拉通知中心的今天視圖,一些顯示界面較為復(fù)雜的第三方插件( 諸如印象筆記 )也是延遲出現(xiàn),這可能與重新加載有關(guān)。 歸根結(jié)底,iOS 8 和 iOS 9 這兩代 bug 和卡頓齊飛的新系統(tǒng),是 iPhone 6 Plus 不可承受之重。雖然 iOS 9 的問題少了些,但對于 iPhone 6 Plus 而言,已經(jīng)不再是最合適的系統(tǒng)版本了,因為 iPhone 6s / 6s Plus 來了。 最后,回到第一個層面“ 我的 iPhone 6 Plus 為啥比把玩過的其它 iPhone 6 Plus 要卡頓 ”的問題,成因是多方面的,下面我將詳細(xì)表述。 理論上來說,下載多少個應(yīng)用對 iPhone 6 Plus 的實際運行并不會帶來明顯的卡頓,例如在下載 442 個第三方應(yīng)用后,你從來都不打開和運行的情況下。但考慮到我的 iPhone 6 Plus 后臺一直處于高度活躍的狀態(tài),所以這個問題并沒有那般簡單。 1. 即便不裝任何第三方應(yīng)用,我的 iPhone 6 Plus 在后臺也很活躍。 在都不安裝任何第三方 App 的條件下,我的 iPhone 6 Plus 可能比你的 iPhone 6 Plus 在一些應(yīng)用場景下更卡頓,雖然對比效果不是很明顯。 首先,我的 iPhone 6 Plus 一直都連著 Apple Watch,這也意味著其一直都開著藍(lán)牙功能,而且時不時地會與 Apple Watch 進(jìn)行數(shù)據(jù)傳輸;我的 iPhone 6 Plus 也一直連著 MacBook Air,后臺一直開啟 Handoff 互聯(lián)互通功能。 其次,我 iPhone 6 Plus 屏幕最上方的定位服務(wù)圖標(biāo)時常會顯示出來,這是因為系統(tǒng)級的定位服務(wù)我一般都會打開,而這也導(dǎo)致我的手機間或進(jìn)行定位服務(wù)。定位服務(wù)之外,Siri、iCloud、Apple Pay 等系統(tǒng)級服務(wù)我都會一直打開。 重點說下 iCloud,只要我用 iPhone 6 Plus 拍了一張照片,后臺就會自動在 WiFi 網(wǎng)絡(luò)下將其上傳到 iCloud 服務(wù)器;但常見的情況是,我在外面拍了幾十或者上百張照片,然后回到家中后可能需要幾個小時或者幾天時間,手機才能將其全部上傳到 iCloud 服務(wù)器。如果是 iPad 或者 Mac 上的新照片,iCloud 服務(wù)器也會同時將其下載到 iPhone 6 Plus 上,而這一切都是在后臺進(jìn)行。 除了 iCloud 照片,包括 iCloud Drive、日歷、備忘錄、Safari、通訊錄同步等,我的 iPhone 6 Plus 都會在后臺進(jìn)行這些數(shù)據(jù)的實時同步和傳輸。 最后,單一的系統(tǒng)項目進(jìn)行后臺數(shù)據(jù)同步或傳輸,并不會占用太大的運行內(nèi)存( RAM )資源以及數(shù)據(jù)讀寫通道,但如果以上所述的這些后臺動作多個同時疊加在一起的話,就會占用不少系統(tǒng)運行內(nèi)存,而這只是在沒有安裝任何第三方 App 的情況下。 2. 裝了 442 個第三方應(yīng)用后,我的 iPhone 6 Plus 變卡頓了。 再次強調(diào),我的 iPhone 6 Plus 變卡頓的原因,準(zhǔn)確來說不是只因為下載了 442 個應(yīng)用,更是因為在有了這 442 個應(yīng)用 ( 尤其是最為活躍的上百個 App 或游戲 )后,其與 iPhone 6 Plus 的后臺聯(lián)動對系統(tǒng)運行內(nèi)存以及后臺數(shù)據(jù)讀寫的更大沖擊。 如前文所述,各種各樣的系統(tǒng)級數(shù)據(jù)和傳輸服務(wù)已經(jīng)在我的 iPhone 6 Plus 后臺占用了一定的「 額外 」運行內(nèi)存,而第三方應(yīng)用的加入,更讓手機系統(tǒng)后臺感受到了「 壓力感 」。 首先,上百個第三方活躍應(yīng)用讓我 iPhone 6 Plus 的系統(tǒng)通知欄和插件欄「 壓力山大 」。 雖然我看到鎖屏通知后,大都會點擊進(jìn)去或者直接消掉,但總有「 看不到 」的時候。而像插件欄中的一些復(fù)雜應(yīng)用( 諸如下圖所示的 Steve 小游戲 ),也會占用一定的運行內(nèi)存。 其次,上百個第三方活躍應(yīng)用帶來了后臺定位服務(wù)、iCloud 服務(wù)等的更高頻調(diào)用,而這又加重了系統(tǒng)后臺對于運行內(nèi)存的占用。 例如在系統(tǒng)定位服務(wù)中,滴滴出行、電信營業(yè)廳等應(yīng)用,只能設(shè)置為「 始終 」或者「 永不 」,沒有「 使用期間 」的選項,所以如果你選擇了「 始終 」,那么即便你徹底關(guān)閉了這些應(yīng)用,它們也會在后臺調(diào)用系統(tǒng)定位數(shù)據(jù),時不時地進(jìn)行數(shù)據(jù)傳輸,并且增加后臺運行內(nèi)存占用。 第三方應(yīng)用同樣可以進(jìn)行 iCloud 數(shù)據(jù)同步和傳輸,跨蘋果設(shè)備的 Handoff 功能( 包括應(yīng)用間的互聯(lián)互通、iPad 收 iMessage、Mac 接電話等 )我也會悉數(shù)全開。作為代價,這些動作進(jìn)行時都會在 iPhone 6 Plus 的后臺占用更多運行內(nèi)存。 iOS 9 系統(tǒng),蘋果開始允許第三方應(yīng)用在后臺刷新內(nèi)容,這不僅帶來了更大的耗電量,也給我的 iPhone 6 Plus 系統(tǒng)后臺帶來了更大的壓力。 最后,在使用 iPhone 6 Plus 的過程中我覺得最卡的時候就是多個應(yīng)用進(jìn)行更新的時候。 因為我都會在第一時間把各種應(yīng)用更新到最新版本,所以我的 iPhone 6 Plus 在 6 月 30 日對 19 個應(yīng)用進(jìn)行了更新,7 月 1 日早上也更新了 10 個左右的應(yīng)用。我是把 App Store 應(yīng)用更新設(shè)置為 WiFi 下自動更新的,但時常還是需要到 App Store 頁面去進(jìn)行手動的全部更新。 在 iOS 9.3.2 系統(tǒng)中,每次我點擊全部更新,如果有十幾個應(yīng)用開始下載或者等待下載,我滑動主屏頁面就會感受到明顯的卡頓,雖然大約只有不到 1 分鐘的時間,但卡頓的情況相當(dāng)明顯。 再次強調(diào),單個第三方 App 進(jìn)行后臺數(shù)據(jù)同步或傳輸,并不會占用太大的運行內(nèi)存( RAM )資源以及數(shù)據(jù)讀寫通道,但如果以上所述的這些后臺動作多個同時疊加在一起的話,就會占用不少系統(tǒng)運行內(nèi)存。 如果相當(dāng)多的系統(tǒng)自帶應(yīng)用和服務(wù)在后臺進(jìn)行數(shù)據(jù)傳輸,同時相當(dāng)多的第三方 App 在后臺進(jìn)行數(shù)據(jù)傳輸,我的 iPhone 6 Plus 就會逼近系統(tǒng)后臺運行內(nèi)存占用的極限。 我把運行內(nèi)存( RAM )簡單劃分為系統(tǒng)運行內(nèi)存( 系統(tǒng)前臺運行內(nèi)存和系統(tǒng)后臺運行內(nèi)存 )以及第三方應(yīng)用運行內(nèi)存( 應(yīng)用前臺運行內(nèi)存和應(yīng)用后臺運行內(nèi)存 )。上文重點表述了系統(tǒng)后臺運行內(nèi)存( 注:系統(tǒng)前臺運行內(nèi)存并不耗太大資源,主要包括主屏運行以及系統(tǒng)內(nèi)置應(yīng)用打開狀態(tài) ),下文將詳細(xì)表述第三方應(yīng)用的運行內(nèi)存占用。 3. 同時開了多個應(yīng)用( 尤其是大型第三方應(yīng)用或游戲 )后,我的 iPhone 6 Plus 真的快到極限了。 在說多開應(yīng)用前,先說下應(yīng)用前臺運行內(nèi)存。簡而言之,iPhone 6 Plus 在帶動大型游戲方面已經(jīng)開始顯得吃力了。以我喜歡的 Oceanhorn( 海之號角 )為例,這是一款被蘋果官方推薦多次的游戲,但在 iOS 9.3.2 系統(tǒng)下打開最新版本的這款游戲后,屏幕會有幾秒鐘的黑屏,然后才出現(xiàn)標(biāo)題畫面,進(jìn)行游戲時也會遇到個別卡頓的操作場景。 需要指出的是,iPhone 6 Plus 運行大型游戲卡頓或者重載的情況,既有 1G RAM 的因素,也有蘋果 A8 芯片對 1080P 設(shè)備不友好、iOS 新系統(tǒng)等多方面的因素。 有網(wǎng)友在知乎回答“ 怎么看待 iPhone 6 和 iPhone 6 Plus 的 RAM 依然是 1GB?”的問題時,表示“ 要是( iPhone 6 / 6 Plus )內(nèi)存升級到 2GB,開發(fā)者必然以 2GB 內(nèi)存來設(shè)計應(yīng)用,到時候 iOS 上到處是內(nèi)存占用大的應(yīng)用,5S( 1GB RAM )也會很快卡 shit 了 ”。 iPhone 6 / 6 Plus 沒有升級到 2GB,但 iPhone 6s / 6s Plus 升級到了 2GB RAM。 除了大型游戲,微信也是一個明顯的重任務(wù) App。當(dāng)然,微信的情況需要因人而異。 因為我加了不少微信群,訂閱號個數(shù)逼近限定值,還有上千微信好友,所以每天早上我首次打開微信,都是一個相當(dāng)緩慢的加載過程。即便是在網(wǎng)速飛起的辦公室,三個小時不開微信,然后再去打開的話( 不管后臺關(guān)沒關(guān)閉 ),也是一個比較緩慢的加載過程,大約 20 秒才能正常顯示。當(dāng)然,微信進(jìn)入加載緩慢給我?guī)淼目D感( 不暢快感 ),不只有運行內(nèi)存的因素,也有網(wǎng)速、手機處理速度等方面的因素。 現(xiàn)在說下多開應(yīng)用,這種情況通常會占用大量的運行內(nèi)存。 傳統(tǒng)認(rèn)知是,可用運行內(nèi)存( RAM )越多越好,這在 Windows 電腦上顯得最為突出。但在 iPhone 和 Android 手機上,卻可以不必在意這個數(shù)值是多了還是少了。 分析認(rèn)為,對于 Android 手機而言,可用運行內(nèi)存越小,利用率就越高,其中的數(shù)據(jù)就越多,數(shù)據(jù)訪問的命中率就越高,系統(tǒng)也就越快。但當(dāng)打開的應(yīng)用越來越多,運行內(nèi)存占用爆滿后,Android 手機就會有內(nèi)存回收機制來進(jìn)行應(yīng)對。這與 iOS 系統(tǒng)的「 墓碑機制 」有頗多共性。 不管 iOS 還是 Android 系統(tǒng),在運行內(nèi)存爆表的時候( 諸如多開應(yīng)用的典型場景 ),都會殺掉后臺的進(jìn)程,這一點是沒有區(qū)別的。有區(qū)別的地方是,在進(jìn)程被殺掉后,Android 系統(tǒng)中的不少進(jìn)程會再度啟動,而 iOS 系統(tǒng)中的被殺掉進(jìn)程卻很難再度啟動。所以,iOS 的內(nèi)存回收機制能取得騰出內(nèi)存的實效,而 Android 系統(tǒng)的內(nèi)存回收機制卻很難阻止「 流氓軟件 」進(jìn)行反撲。 蘋果把 iOS 的內(nèi)存回收機制壟斷在自己手中,不給被殺掉的第三方應(yīng)用在后臺留有任何反撲的機會; Google 雖然也握有 Android 內(nèi)存回收機制的主動權(quán),卻也給了被殺掉的第三方應(yīng)用在后臺選擇反撲的主動權(quán)。 回到我的 iPhone 6 Plus 上,為啥后臺應(yīng)用開多了,也會感到卡頓呢? 首先,雖然多開應(yīng)用、運行內(nèi)存爆表后,iOS 系統(tǒng)會干掉部分后臺 App 或游戲,但不管是重新打開被關(guān)掉的后臺應(yīng)用或大型游戲( 重新載入 ),還是在多個后臺應(yīng)用間進(jìn)行切換的過程( iOS 8 / 9 系統(tǒng)的后臺應(yīng)用切換過程本身就不算流暢 ),我都感覺到了卡頓,更準(zhǔn)確的說法是不流暢。 其次,多開應(yīng)用持續(xù)累加,運行內(nèi)存頻繁爆表,后臺內(nèi)存回收機制頻繁作用,后臺這一連串過程本身可能也會帶來前臺操作的卡頓感。 最后,蘋果 A8 芯片對于 1080P 設(shè)備的優(yōu)化問題,iOS 9 系統(tǒng)本身對于 iPhone 6 Plus 的優(yōu)化問題,這些問題本身也會導(dǎo)致手機在開多應(yīng)用后產(chǎn)生更加明顯的「 疲憊感 」。 綜上所述,我的 iPhone 6 Plus 之所以會出現(xiàn)卡頓情況,有著相對復(fù)雜的成因,單個的原因或者情況很難導(dǎo)致卡頓,但多個原因和情況同時并發(fā)的話,我就可能感受到明顯的卡頓。 iOS 8 系統(tǒng)后,蘋果不僅加入了更多的系統(tǒng)后臺動作,而且也將不少后臺動作的權(quán)限開放給第三方 App。與 Apple Watch、iPad、Mac 設(shè)備間的聯(lián)動,一定程度上也加大了系統(tǒng)后臺運行內(nèi)存的占用以及數(shù)據(jù)的讀寫和傳輸通道。除了系統(tǒng)后臺進(jìn)行的這些動作,個別第三方應(yīng)用( 例如微信 )以及大型游戲在 iPhone 6 Plus 的前臺也相當(dāng)占用運行內(nèi)存,以至于出現(xiàn)進(jìn)入緩慢、個別場景操作卡頓的情況。 再次說明,iPhone 6 Plus 的卡頓問題不具有連續(xù)性( 不同于 Android 手機可能存在的連續(xù)卡頓現(xiàn)象 ),而只在特定的應(yīng)用場景下,表現(xiàn)最突出的莫過于前臺運行個別大型游戲,或者后臺應(yīng)用連開、系統(tǒng)后臺運行活躍的時候。由于我的 iPhone 6 Plus 裝了 442 個應(yīng)用( 上百個活躍應(yīng)用 ),這也讓我有更大的幾率遇到這些特定的應(yīng)用場景。 總結(jié)起來,iPhone 6 Plus 卡頓的原因既有 1G RAM 本身的因素,還有蘋果 A8 芯片以及 iOS 系統(tǒng)內(nèi)在的因素。蘋果給 iPhone 6 / 6s Plus 配備 2G RAM,也表明大運行內(nèi)存對 iOS 設(shè)備的必要性,要知道 12.9 英寸 iPad Pro 甚至擁有了 4G RAM。 當(dāng)然,也不是運行內(nèi)存越大,就越好。沒有與之完美搭檔的處理器和操作系統(tǒng),大運行內(nèi)存手機的用戶體驗可能還不如個別小運行內(nèi)存手機。例如,個別 4G RAM 的 Android 機在整體流暢度上還不如 3G RAM 的 Android 機,同時完敗于 2G RAM 的 iPhone 6s。 文章最后,再提下手機可用存儲容量( ROM )與卡頓的關(guān)系吧。主流觀點認(rèn)為,可用存儲容量多少與手機卡頓并無太大關(guān)聯(lián),但有網(wǎng)友在知乎發(fā)言表示,“ iPhone 裝太多應(yīng)用后,一定會卡 ”。 對于這個問題,大家又是怎么看的呢? 感謝大家的耐心觀看,有什么問題都可以在評論區(qū)進(jìn)行交流。 附我的 iPhone 6 Plus 主屏截圖,共計 442 個應(yīng)用( 可用存儲容量:868M / 113G ): |