因為不少人對於為什麼 Android 運行會不順暢?或是已經拿了高階機種卻依然會 Delay 的部分很有疑問,所以在這邊用比較簡單的方式說明一下 Google 的 Android 作業系統對於 RAM 是如何管理的。我盡量以比較簡單的方式解說,沒有太多過於複雜的專有名詞,希望能解開大眾的疑惑。當然,如果有錯誤的地方也歡迎指正,並希望能將這篇文章傳播出去,以減少多數人對這部分的不解。
Android 是基於 Linux 的系統,RAM 的分割方式如下:
|-----主系統佔用(這部分看不到)-----|---後台長駐服務---|--閒置程式快取--|-剩餘RAM-|
可以看到主系統佔用很多(隨著Android版本的進化,以後可能還會越來越多)
後台服務佔用的量通常依照你掛載了多少常駐服務而定(FB、LINE、WhatsApp...等等)
而使用過未完全關閉的 APP 會變成快取處於閒置狀態供隨時喚醒(相機、圖片庫、計算機...等等)
真正剩下的 RAM 其實非常的少,目前 Android 4.2.2 版本的話預設只有 31.52 MB
在目前 Android 主流版本的原始設定裡
APP 展開後的預設 RAM 使用量是 8 MB
當預設值不足時往上增加,每次 64 MB
最大上限可到 256 MB
※參照/system/build.prop,有些機種可能會有更改而不同
所以只要你的剩餘 RAM 有大於 8 MB 都不會有問題
當 APP 需要更多 RAM 來處理時,系統會關閉閒置程式
讓 RAM 空出來給前台作業擴增
像原生系統的 Nexus 系列就算閒置 RAM 再低
都沒有什麼運行不順暢的問題
另外,一般的殺程式或工作管理 APP 其實會跟系統搶工作
反而造成互相衝突且無謂的多餘動作,實在不需要使用
而且通常只能看到"|--閒置程式快取--| -剩餘RAM-|"這段
看不到真正的"| -剩餘RAM-|"
因為多半都是直接讀取這邊的訊息而已
而廠商客製化過的 ROM(非原生Android)因為整合性跟相容性的問題
軟體寫的不好就容易在多工作業累積量多時造成運行不順暢
這點跟 RAM 多少沒太大關係,反而是 I/O 衝突,或是 CPU 處理能力不夠
所以以目前 Android 主流版本來說,RAM 其實只要有 1 GB 就夠了
系統會自動調整來協助使用者操作
所以遇上Delay通常有兩種結論:
強大的 CPU 配上大量的 RAM 卻依然不順暢?廠商客製化軟體寫不好拖垮系統的可能性比較大
普通的 CPU 配上 1 GB 的 RAM 卻依然不順暢?CPU 處理能力不夠的可能性比較大
那 RAM 為什麼要越來越多?
因為 Android 是多工系統,因應使用者需求越來越大
1.常駐程式使用量越來越多
2.讓更多程式處於閒置快取狀態來提高啟動速度
所以 RAM 越多,的確是有好處
你可以開啟越多 APP 不用關,隨時需要馬上喚醒
因為從"完全關閉狀態"啟動程式可能需要 0.5 秒
但從"閒置快取狀態"喚醒卻只要 0.1 秒(連過場動畫還沒播完就完全展開在等待了)
你也可以同時常駐更多服務在後台,不必擔心閒置程式快取區太少
因為當閒置程式快取區比較少時,你可能只能放 5 個程式在裡面
當開啟第 6 個時,第 1 個程式就會被強制關閉來釋放 RAM
但如果閒置程式快取區比較多時,你可能可以放 10 個程式在裡面
直到開啟第 11 個時,第 1 個程式才會被強制關閉來釋放 RAM
如果你常用的程式就那不到 10 個
CPU 就不用花太多時間來做"關閉程式→釋放RAM→前台擴增"這個動作了
以上的說明,如有錯誤歡迎指正,謝謝。
aidi3322 wrote:
說的很好~~但我有個問題:有一些app是開機就啟動,但平常都用不到的這些app需要靠優化軟體,把它設定開機不啟動和後台不啟動嗎?開機不啟動和後台不啟動有和不同?
要看是什麼性質的 APP,並且在何時 Auto Start
有分開機自動啟動、條件自動啟動
可以透過 Autorun Manager 這個 APP 去管理 Auto Start(需有 ROOT 權限)
像是 LINE、WhatsApp...不啟動服務就無法接收到訊息,所以通常都會開機自動啟動
FB、Plurk...若是沒有要自動更新接收訊息,就可以取消條件自動啟動
而Google Play...之類的系統 APP,最好是不要更改
像是"移除或安裝"程式時,Google Play 就會條件自動啟動,目的是回報並更新帳戶資料
而從 Web 上選擇安裝 APP 後手機就會自動下載,所以其實平常它也會藏在後台甚至看不到
另外還有像 Google Map 也是有 Auto Start,目的在於更新網路位置或加速 GPS 定位
一般來說我不會去更改任何 APP 的 Auto Start,因為通常都是開發者認為有必要的
反正只是啟動後在後台閒置或是啟動時有動作,其餘時候並不會耗用 CPU
頂多只會佔用 RAM,直到閒置程式快取區不足時被系統強制關閉
除非是開發者亂寫,沒必要的時候也設定 Auto Start
像是遊戲類根本沒必要 Auto Start,甚至它設定 Auto Start 只是為了推送廣告
這種我才會去取消它的 Auto Start 權限,或是乾脆移除它!
10號 wrote:
是心理因素嗎? 我覺得我的GN越來越慢了。。。
chieh-ccw wrote:
所以原生系統是不用擔心RAM不夠嗎?
只要大於8M就一定可用嗎?
那我也是心理因素嗎?
我沒甚麼在操APP,就單純的生活應用軟體而已
我的NEXUS S 感覺也會有點頓頓的
RAM通常都剩下100M以下!有時候都在50-60M左右
不是心理因素,而是硬體配備真的越來越不夠了...
Nexus S 的硬體配備要應付目前的 Android 主流版本已經很吃力
本身就只有 512 MB 了,扣掉主系統佔用後所剩實在不多
相對的 CPU 在處理"關閉程式→釋放RAM→前台擴增"這個動作會比較頻繁
同時 CPU 處理能力又不夠的情況,當然就很難有順暢的表現
以前我拿 Nexus S 的時候用 CM7 的 ROM 跑 Android 2.3.X 版本時
RAM 都只剩 32 MB 左右,但依然是快的不得了
現在要拿來跑 Android 4.X.X 以上,我想一定很吃力...
我目前的現役機是 Galaxy Nexus,我感覺它能應付的最好的是 Android 4.1.2
當升級到 Android 4.2.1 或 4.2.2 以後開始,的確有越來越無力的跡象
不管是系統越來越龐大,還是 APP 越更新越肥大
都明顯讓 CPU 工作量越來越多,而漸漸顯得無力
去年底用 Slim 的 Android 4.1.2 時,的確是最流暢的時候
或許對 Android 4.2.X 以後的版本要用 Nexus 4 來跑才能有良好的流暢度
kingka wrote:
好文章...給你
有個問題想請問...當後台越多APP被占用時..跟耗電量有沒關係?
同樣,這沒有絕對,要看 APP 的性質而定
1.會定時自動更新的 APP
因為會使用網路傳輸,同時也會用到 CPU 資源,這種時候就會消耗電量
2.會定時自動重整的 APP
像是系統自帶的 Media Scan,它會不定時掃描手機內的新媒體檔案
當它在動作時也是會佔用 CPU 資源並且消耗電量
3.使用完沒有完全關閉的 APP
只要它沒有動作,單純只是在後台閒置,那是完全不佔用 CPU 資源也不會消耗電量的
因為只要有開機通電,RAM 被塞滿滿的還是只塞一半,所消耗的電量都一樣
不會有使用率 50%,RAM 就只吃一半功耗,現在的技術還沒那麼神奇
所以使用完的 APP 直接按[HOME]鍵丟到後台是不會有問題的
除非你不想讓它自動更新或自動重整,那就去它的設定裡取消掉即可
風景映像。 https://yushenghsu.com
我的現役機是gn
我也是感覺到他愈來愈不夠力了。
我猜測,可能不是cpu的問題。
我覺得是ram的問題比較大。
隨著程式和系統昇級,功能愈來愈多。記憶體的要求好像也愈來愈高。
為什麼我覺的不是cpu不夠力…因為我的gn基本上已經沒有灌遊戲了。幾乎全部移到n10去。
平常就是開開網頁,fb,line一下…看看電子書。還有一、兩個line的小遊戲。
我也覺得在4.1.2的時候好像最順。
不順的原因,在我自己的gn上頭,我推測有幾個原因。
第一,開過chrome之後一定不順…隨著chrome的不斷更新,我真的感覺到他愈來愈吃資源了。我原本非常喜歡CHROME, 放棄海豚換成CHROME不過,我現在已經考慮是不是改用其他流覽器了。
原本有一個叫naked brower的蠻好用的,號稱最省資源,一開始也真的很讚,不過,隨著他不斷的進化就愈來愈不順了…
第二、我有用第三方的rom,隨著他每個月大概一到兩次的昇級,後來好像也愈來愈不順了。不過,叫我重頭factory reset…我實在很沒力…或許等下一次大昇級(4.3?)再來搞一下吧!我的rom是pa…
第三、外掛的桌面…我現在用的這個桌面實在太吃資源了…buzz launcher,不過我沒有辦法換掉他,因為我太喜歡這個桌面了。哈哈。
我真的不知道如何是好…難道用回原始rom,原始桌面??
gn真的已經走到這一步了?
有考慮到n4,不過現在換n4實在太不明智了。我一定會後悔。
畢竟是舊的4核,效能和n10的雙核心實在也差不了多少。
看新的4核,比如小米2s或htc one之類的,實在強太多了。
而且少了1080p…
照相又太沒有長進了。
想想和gn,相比之下好像也沒有什麼太了不起的進步。
到底要怎麼辦啊?
Life will never do without Hi-tech
關閉廣告