更多玩機技巧,快關注“差評”
上次,世超寫了一篇文章,告訴大家一些手機加速工具其實并沒有什麼用……
文章發布之後,收到了不少留言,很多差友和世超吐槽了殺進程的血與淚。
還有一部分差友當場表示要再換個新手機……
這屆差友家裡都有礦嗎???
看來黑市可以考慮賣手機了!!!
不過,在看了一些留言之後,世超發現很多差友都在後台推薦一類叫做「 吃掉内存 」的 app。
大概意思就是這個 app 本身會在内存中釋放很大一坨數據,把内存吃光,逼着系統的内存管理機制停掉其他正在後台運行的進程,以此加快系統速度。。。
打個比方,一輛公交車滿了,人擠人很難受,這時候上來個超級大胖子,把一些人擠下車之後自己再下車,這樣車就空出來了嘿。。。
不過世超對這個方案其實是不推薦的,因為在之前那篇文章裡也說了,要想真的解決手機卡頓的問題,幹掉那些明明已經切到後台,但依舊保持活躍狀态的 app 才是關鍵。
正是那些 app 在手機的後台持續運行,積少成多,消耗了大量的 CPU 資源,才加劇了發熱和電量消耗。
但是暴力殺掉全部後台進程,其實是「 殺敵一千,自損八百 」。。。
沒錯,把後台進程無差别的殺死,就沒有 app 在後台消耗 CPU 資源了,道理簡單易懂;但全家桶的互相喚醒怎麼辦,那些本身無害的休眠 app 怎麼辦:
把内存清幹淨之後,突然想去螞蟻森林澆澆水;之後水也澆了,「 阿裡動物園 」也重新強勢進駐你的手機内存了……
還有一些是已經休眠 app 的進程緩存,即使駐留在内存中也不會耗費電量,難道也需要一并殺死嗎?
世超想要告訴大家的是,後台進程本身是無罪的,耗電的真正元兇其實是那些本該休眠,卻依舊保持活躍并且占用 CPU 的後台進程!
真假後台的争論大概從 2015 年左右開始,網上就存在一個論調了:iPhone 的後台是假後台,不如 Android。
一開始的時候,iOS 和 Android 說是兩個極端也不為過:
iPhone 最早不允許任何程序在後台運行,按 HOME 鍵退出就代表進程被銷毀;所以一開始的 iPhone 可沒法像現在一樣,能随時收到微信消息。
iOS 3,蘋果引入了通知中心和消息推送服務,QQ 和微信終于能在後台收到信消息了。。。
直到 iOS 4,為了不讓打遊戲的用戶因為回微信消息丢了遊戲存檔,蘋果開始允許 app 在後台駐留。
但駐留和運行也是有區别的,在 iPhone 上,程序退出後會被系統「 挂起 」,以休眠的形式放到内存裡。
就像把 app 關到了冰箱的保鮮室,app 在後台不可以接觸 CPU 一類的計算資源,但是取出的時候會和剛放進去的時候一樣新鮮。所以愛奇藝退到後台之後就沒法繼續緩存電視劇了。
後來由于使用場景愈發複雜,iOS 又加入了「 後台自動刷新 」功能,允許被休眠的進程在後台有周期地喚醒;但總的來說還是十分克制。
然而 Android 走了一條完全相反的路,除非 app 自己決定進入休眠狀态,不然想怎麼在後台運行都可以。
QQ 能在後台收到消息,愛奇藝能在後台緩存視頻,百度雲能在後台下載……
然後手機就卡死了。
直到 Android 6.0,谷歌才開始對後台應用進入休眠狀态提出一些強制要求;到了 Android Q,系統已經能夠休眠大多數強行在後台保持活躍的進程了。
所以「 假後台 」隻是一知半解的網友們人雲亦雲之後對被休眠進程的錯誤理解罷了;這麼多年的實踐也證明了,隻有采取更強硬的後台進程休眠機制,才能更好保證手機上可憐的電池續航。
雙刃劍:内存壓縮技術世超前面說了這麼多,隻是想給後台進程「 正名 」一下,後台進程并不是什麼十惡不赦的東西,相反,大多數情況下緩存在後台的進程是個好文明。
畢竟誰也不想視頻緩存的時候隻能幹等着,遊戲切出去回個消息再回來存檔沒了對不對。
但面對後台進程導緻的手機卡頓我們又不能視而不見,這個時候我們就得從别的地方找原因了。
比如虛拟内存(内存交換)。。。什麼的。
虛拟内存其實就是在硬盤上劃出了一片區域,充當「 備用内存 」。
當電腦上的内存不夠用的時候,系統就會自動把一部分休眠中的後台進程轉移到硬盤上的虛拟内存中,需要使用的時候再挪出來。
這樣既使活躍中的重要進程有了足夠的内存,已經休眠的進程也逃過了因為内存不足而被強行終結掉的命運。
Android 一開始使用的也是這個方案,不過後來慢慢就不用了……
原因很簡單:卡!
即使是 UFS 2.1 的閃存,随機讀寫速度依舊隻有内存的千分之一,換句話說,從閃存恢複已休眠的 app 要比直接從内存中恢複慢一千倍!!
我世超可是一個日理萬機的男人,一個虛拟内存就要浪費我幾毫秒的時間,這還了得??
還好在 Android 4.4 的時候,谷歌引入了基于 zram 的「 内存壓縮 」技術,放棄在硬盤裡專門劃一片區域作為虛拟内存,轉而直接在内存中劃這片區域,用來壓縮已休眠的後台進程,為正在運行的進程騰出空間。
由于 zram 使用的 lz4 壓縮算法主打的就是快,在多核 CPU 上的速度甚至可以接近内存本身的讀寫速度,解決了虛拟内存向閃存轉移數據導緻的讀寫速度瓶頸。
不但能讓 4 GB 内存當 8 GB 的來用,還能解決讀寫速度慢導緻的卡頓問題,這簡直就是内存不足的終極良藥啊!
但是世超曾經說過:萬事皆有利弊。就好比内存壓縮這個技術吧,它并不是如想當然那般,遇到什麼休眠的進程說壓縮就壓縮。而是需要先在内存裡劃定一塊區域,之後這塊區域就隻能用來放壓縮過的進程的,活躍的進程不能占用。
通常情況下手機廠商都會把這個值設定為實際内存大小的 30% 左右,也就是說 6 GB 的内存有 1.8 GB 是隻能用來存放壓縮過的進程的,實際上隻有不足 4.2 GB 的内存是可以直接被 app 使用的。
這個比例設定其實是挺合理的,但是别忘了,世超還說過:就算沒有弊病的,也逃不過時間這把殺豬刀。
我們回顧一下過往,在 Android 4.4 發布的 2013 年,谷歌自家旗艦手機 Nexus 5 的内存是 —— 2 GB!
兩年前發布的千元機紅米 5 表示:俺也一樣。
于是乎,問題就來了,當年誰能想到,現如今一個支付寶,外加一個微信,1 GB 内存就出去了??
這還不算淘寶 QQ 以及滴滴美團今日頭條一類的内存巨獸,都算進去的話差不多又是 1 GB 内存出去了。。。
原本 2 GB 内存的手機,被内存壓縮這麼一搞,隻剩下不足 1.4 GB 的内存可以直接被 app 調用了……
我們是否需要壓縮内存汝之蜜糖,吾之砒霜;内存壓縮到底讓手機變卡了還是變快了,衆說紛纭,手機論壇上争了這麼舊,到頭來「 發燒友 」們誰也沒争過誰。
世超覺得,後台進程是個好文明,内存壓縮也是個好文明,甚至虛拟内存也是個好文明;比如 Linux 就推薦在内存小的舊電腦上,同時啟用内存壓縮和虛拟内存兩種技術,在盡量避免遭遇讀寫瓶頸的情況下保留更多後台進程。
但世超也覺得,在一些性能羸弱的設備上,一些「 好文明 」反而會誤事兒:比如在使用機械硬盤的舊電腦上安裝 Windows 10;也比如在隻有 2 GB 内存的舊手機上啟用内存壓縮、保留後台進程……
要不要考慮親自管理進程?( 以下内容技術高能,且存在一定風險,懶得折騰手機的可以酌情跳過。)
解決頻繁啟動的後台進程其實不難,世超之前針對原生 Android 也給大家推薦了綠色守護和黑阈兩款 app;由于安裝之後有非常完善的引導說明,所以世超并未做過多介紹,但卻被一些差友給看漏了。。
在未獲取 root 權限的手機上世超其實更推薦黑阈,圖為綠色守護的啟動引導
但内存壓縮是由系統内核控制的,因此需要 root 權限才能更改,但世超還是得說清楚一點:
對小白來說,root 存在一定風險,也不要盲目輕信網上的 「 一鍵 root 工具 」,基本都是在騙人。( 如果你看完還決定 root,後果自負 )
對于那些已經 root 了手機,尤其是使用 Magisk 獲取了 root 權限的差友,Magisk 倉庫内已經提供了控制内存壓縮功能的側載模塊,對已經使用 Magisk 獲取了手機 root 權限的差友來說操作起來會簡單很多。
Magisk 是一款通過劫持系統啟動鏡像挂載修改模塊的社區工具
對于内存小于 2 GB 的手機來說,世超建議關閉内存壓縮和虛拟内存,讓系統本身的後台管理機制解決不安分的後台進程。使用 Magisk 模塊禁用内存壓縮的方法可以參照下方的圖例。
而 2 - 8 GB 以上内存的手機,世超其實都不建議對内存壓縮的狀态進行更改;而 8 GB 以上内存的手機,怎麼也得是骁龍 835 以上的 SoC 吧,如果還是覺得卡。。。
那。。。
你買的手機一定是假的!
“ 要不還是再買個手機吧。 ”
,