當前位置:
首頁 > 科技 > Android要糾正內存世界觀了

Android要糾正內存世界觀了

Android首先使用的是一個去掉swap的Linux內核(至少在Android
4.4以前的版本中是這樣),這樣就阻礙了Android上的應用程序使用Page
out(應用程序使用的內存,對操作系統而言都是一張張Page,而對於老化的Page,操作系統可以將它們從內存中置換到硬碟上,這種操作叫作Page
out),這一常規的內存操作。那麼是不是可以理解為Android應用就更應該省著用內存了呢?答案還不一定。

Android框架對於進程內存的第二個管控特徵是,每個進程都有一個內存最高閾值(純凈的Native內存申請不算在內),一旦進程申請內存突破了這個閾值,將會產生異常,並退出運行時的物理內存空間。簡單地說,也就是Android為每個進程已經分好了一塊蛋糕,至於你吃或者不吃,是你自己的事情。但這是否意味著Android應用程序為了效率考慮,應該玩命兒申請內存,使自己的內存沿著天花板滑行,這樣是否最健康呢?答案也不一定。

Android的第三個管控特徵是,進程都有可能被殺。在物理內存吃緊的時候(通常在使用meminfo查看內存概況的PSS總值達到設備物理內存的80%左右時),Android框架就開始根據一套自由的LRU進程Cache列表來殺死進程,被殺死的進程在死前將會得到通知,用以保存現場。而這部分被殺死的進程所騰出來的物理內存,就可以用於某些應用程序的內存申請需求。那麼是不是為了不被殺死,Android應用應該盡量減少自己內存,以降低在LRU進程Cache列表中的排名呢?答案還是不一定。

既然已經有App的內存負載排名了,那麼怎麼做到在內存負載方面優於別的目標產品呢?在關於Procstats的章節我們已經介紹了所謂的「潛規則」。要影響排行的順序,就要了解排行的原因,先要看看「後台」的定義。內存專項標準,如表所示。

Android要糾正內存世界觀了

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |