android開機自動開啟zram,低內存配置 ?|? Android 開源項目 ?|? Android Open Source Project...

Android 支持內存為 512 MB 的設備。本文檔旨在幫助 OEM 優化和配置 Android 內核 4.4,使其能夠在低內存設備上運行。在下文所述的優化措施中,有幾項非常通用,甚至也可應用于以前的版本。

Android 內核 4.4 平臺優化

改善了內存管理

采用了經驗證可節省內存的內核配置:交換到 zram。

終止了那些即將被取消緩存且過大的緩存進程。

不允許大型服務自行返回至 A 服務類別(以免導致啟動器終止)。

終止了那些處于空閑維護狀態中的過大進程(甚至終止當前 IME 等通常不可終止的進程)。

對后臺服務的啟動進行了序列化。

優化了低內存設備的內存使用方式:采用更嚴格的內存不足 (OOM) 調整級別、縮減圖形緩存大小。

減少了系統內存占用

刪減 system_server 和系統界面進程(節省了幾兆的內存)。

在 Dalvik 中預加載 dex 緩存(節省了幾兆的內存)。

采用了經驗證的 JIT-off 選項(每個進程最多可節省 1.5MB 的內存)。

減少了各進程的字體緩存開銷。

Procstats

添加了一個開發者選項,以顯示內存狀態和應用內存使用情況(按照運行頻率和所耗內存量排序)。

API

添加了

內存跟蹤

添加了 memtrack HAL 來跟蹤圖形內存分配情況、dumpsys meminfo 中的更多信息,以及 meminfo 中的闡明性總結(例如,所報告的可用內存包括緩存進程占用的內存,這樣 OEM 就不會嘗試優化內存錯誤)。

編譯時配置

低內存設備標記

ActivityManager.isLowRamDevice() 標志可確定應用是否應關閉在低內存設備上表現非常差的某些內存密集型功能。

對于內存為 512 MB 的設備,該標記應返回 true。可以通過在設備 makefile 中使用以下系統屬性來啟用該 API:

PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true

啟動器配置

啟動器的默認壁紙設置不應使用動態壁紙。低內存設備不應預裝任何動態壁紙。

內核配置

優化內核/ActivityManager 以減少直接回收

當進程或內核嘗試分配(直接分配或因新頁面中存在故障而分配)內存頁面并且內核已用盡所有可用內存時,就會發生直接回收。在這種情況下,內核需要釋放一個頁面,并在此過程中阻斷分配操作。而這通常又需要磁盤 I/O 清理一個有文件支持的臟頁或等待 lowmemorykiller 終止一個進程。最終可能會導致任意線程(包括界面線程)中出現額外 I/O。

為避免出現直接回收,內核已配有可觸發 kswapd 或后臺回收的水印。此線程會嘗試釋放頁面,以便下次分配真實線程時,能夠快速順利啟動。

用于觸發后臺回收的默認閾值相當低,在 2GB 設備上約為 2 MB,在 512 MB 設備上約為 636 KB。內核通過后臺回收僅能回收幾兆的內存。這意味著,任何快速分配超過幾兆內容的進程都會快速導致直接回收。

在 Android-3.4 內核分支中,我們通過補丁程序 92189d47f66c67e5fd92eafaa287e153197a454f(“添加用于擴展可用內存空間的可調選項”)添加了對內核可調選項的支持。如果您選擇將該補丁程序添加到設備內核中,ActivityManager 會告知內核嘗試保留能容納 3 個全屏 32 bpp 緩沖區的可用內存空間。

這些閾值可通過 config.xml 框架進行配置。

-1

0

優化 LowMemoryKiller

ActivityManager 可配置 LowMemoryKiller 的閾值,使其符合它對在每個優先級分段中運行進程時所需的文件支持頁面(緩存頁面)工作集的預期。如果設備對工作集有很高的要求(例如:如果供應商界面需要更多內存,或者如果添加了更多服務),則可增大閾值。

如果為文件支持頁面預留了太多內存,則可減小閾值,以便系統能夠在因緩存變得過小而導致磁盤超負荷之前就終止后臺進程。

-1

0

交換到 zram

zram 交換可通過壓縮內存頁面并將其放入動態分配的內存交換區來增加系統中的可用內存量。由于這是以犧牲 CPU 時間為代價來增加少量內存,因此您應仔細權衡 zram 交換會對您系統的性能造成的負面影響。

Android 會在多個層面上處理 zram 交換:

首先,必須啟用以下內核選項,才能有效地使用 zram 交換:

CONFIG_SWAP

CONFIG_ZRAM

然后,您應將一行與下列類似的內容添加到 fstab 中:/dev/block/zram0 none swap defaults zramsize=,swapprio=

zramsize 是必要內容,表示您希望 zram 區域占用多少未壓縮內存。壓縮比通常介于 30-50% 之間。

僅當您沒有多個交換區時才需要 swapprio。

在設備專用 swap_block_device,以便 SELinux 適當地對其進行處理。

/dev/block/zram0 u:object_r:swap_block_device:s0

默認情況下,Linux 內核每次會換入 8 頁內存。當使用 zram 時,每次讀取 1 頁內存產生的增量開銷微乎其微,如果設備承受巨大的內存壓力,可能有所助益。要想每次只讀取 1 頁內存,請將以下內容添加到您的 init.rc 中:write /proc/sys/vm/page-cluster 0

在 init.rc 行的 mount_all /fstab.X 行之后,添加:swapon_all /fstab.X

如果在內核中啟用了此功能,系統便會在啟動時自動配置內存 cgroups。

如果內存 cgroup 可用,則 ActivityManager 將優先級較低的線程標記為可比其他線程更適合交換。在需要內存時,Android 內核會開始將內存頁面遷移到 zRAM 交換區,并會優先處理那些已被 ActivityManager 標記的內存頁面。

Carveout、Ion 和連續內存分配 (CMA)

在低內存設備上,請務必注意 carveout,尤其是那些未得到充分利用的 carveout,例如用于安全地播放視頻的 carveout。有幾種解決方案可最大限度地減小 carveout 區域的影響,具體取決于硬件的確切要求。

如果硬件允許不連續的內存分配,則可利用 Ion 系統堆從系統內存中分配內存,這樣便無需使用 carveout。Ion 還會嘗試增大分配的內存空間以消除外圍設備上的轉譯后備緩沖區 (TLB) 壓力。如果內存區域必須連續或必須限定在某個特定地址范圍內,則可以使用 CMA。

這將創建一個 carveout,系統也可以將其用于處理可移動頁面。

當需要該區域時,可移動頁面就會從中移出,以便系統將處于空閑狀態的大型 carveout 用于其他目的。 您可以直接將 CMA 與 Ion CMA 堆配合使用。

應用優化提示

使用 development/tools/findunused 移除預安裝應用中所有未使用的資源(這應該會有助于減小應用所占用的空間)。

針對資源(特別是具有透明區域的資源)使用 PNG 格式。

編寫原生代碼時,請使用 calloc() 而非 malloc/memset。

請勿啟用會將 Parcel 數據寫入磁盤并在之后讀取這些數據的代碼。

使用 SSP 過濾,而不要訂閱已安裝的所有軟件包。請添加如下所示的過濾條件:

了解 Android 中的各種進程狀態

狀態

含義

詳情

SERVICE

SERVICE_RESTARTING

由于與應用相關的原因而在后臺運行的應用。

SERVICESERVICE_RESTARTING 是應用過于頻繁地在后臺運行時會遇到的最常見的問題。使用 %duration * pss 或 %duration 作為“不良”指標。理想情況下,這些應用根本不應該運行。

IMPORTANT_FOREGROUND

RECEIVER

在后臺運行的應用(不直接與用戶交互)。

這些應用會增加系統的內存負載。使用 (%duration * pss)“不良”值來對這些進程進行排序。不過,很多此類應用都會因合理原因而需要運行。pss 大小將會是它們的內存負載的重要組成部分。

PERSISTENT

持續的系統進程。

跟蹤 pss 可監視這些進程是否會變得過大。

TOP

正與用戶交互的進程。

pss 在此又成為了重要指標,可顯示應用在使用過程中產生的內存負載。

HOME

CACHED_EMPTY

系統保留的備用進程。

這些進程可隨時終止,并可根據需要重新創建。內存狀態(“正常”、“中等”、“低”、“嚴重”)是根據系統運行的此類進程的數量進行計算的。這些進程的關鍵指標為 pss。在這種狀態下,這些進程應盡可能地減少其內存占用空間,以便系統能夠保留盡可能多的進程。一般來說,與在 TOP 狀態下相比,運行狀況良好的應用在該狀態下的 pss 占用空間明顯更小。

CACHED_ACTIVITY

CACHED_ACTIVITY_CLIENT

與 TOP 相比,這些狀態顯示了應用將內存釋放到后臺的程度。

排除 CACHED_EMPTY 狀態可改善這些數據,因為這項操作會排除因某些原因(除了與用戶互動之外)而啟動進程的情況。

這樣便無需處理 CACHED_EMPTY 在執行與用戶相關的 Activity 時產生的界面開銷。

分析

分析應用啟動時間

如需分析應用的啟動時間,請運行 $ adb shell am start -P 或 --start-profiler 并啟動您的應用。在該進程從 zygote 分 k 之后以及任何代碼加載到該分支之前,分析器就會啟動。

使用錯誤報告進行分析

錯誤報告包含一些服務(包括 batterystats、netstats、procstats、usagestats),它們可用于調試。報告可包括以下行:

------ CHECKIN BATTERYSTATS (dumpsys batterystats --checkin) ------

7,0,h,-2558644,97,1946288161,3,2,0,340,4183

7,0,h,-2553041,97,1946288161,3,2,0,340,4183

檢查是否存在任何持續進程

要檢查任何持續進程,請重新啟動設備并檢查進程情況。然后,讓設備運行幾個小時,然后再次檢查進程情況。

兩次檢查之間不應存在任何長時間運行的進程。

運行長時測試

要運行長時測試,請讓設備運行較長時間,并跟蹤進程的內存占用情況,以確定內存用量增加還是保持不變。然后擬訂規范的使用情形,并針對這些情形運行長時測試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529324.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 自動 鍵盤,關于Android中的軟鍵盤

InputMethodService為我們的輸入法創建了一個Dialog,并且將該Dialog的Window的某些參數(如Gravity)進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統對活動主窗口進行調整,從而為輸入法騰出相應的空間&#xff0c…

Android渠道包自動發布市場,Android Gradle實現打包指定渠道后自動上傳到fir

fir分三個主要步驟1.獲取fir上傳憑證2.上傳APKAPP logo圖標3.獲取最新的下載地址供別人下載注:python使用的是requests網絡請求庫1.獲取fir上傳憑證image.png代碼如下:# 第一步:獲取fir上傳憑證print("get fir upload certificate"…

android studio vfs,Android Studio:嘗試呈現XML布局的InvalidVirtualFileAccessException

我正在嘗試在我的應用中預覽xml布局(任何xml布局).我正在使用Android Studio 1.5 Preview 2.我一遍又一遍地收到此錯誤:InvalidVirtualFileAccessException:訪問無效的虛擬文件:file:// D:/Scott/Android/Studio/MyApp/app/build/intermediates/classes/debug/com/scott/myapp/…

android 基類fragment,Android DialogFragment 基類的定制

鴻洋博客介紹:DialogFragment的基本使用好處:1:使用DialogFragment來管理對話框,當旋轉屏幕和按下后退鍵時可以更好的管理其聲明周期,它和Fragment有著基本一致的生命周期2.DialogFragment也允許開發者把Dialog作為內嵌…

升級鴻蒙系統無法選擇應用,申請鴻蒙系統有一個應用選擇怎么選擇呢

[分享交流]申請鴻蒙系統有一個應用選擇怎么選擇呢34364電梯直達huafen774590890新學乍練發表于 2020-12-18 22:19:17來自:HUAWEI Mate 30 Pro 5G最新回復 2020-12-19 09:31:55要怎么選擇大家知道嗎?想著你的狼自成一派發表于 2020-12-18 22:22:29來自&am…

html5 網頁游戲論文,JavaScript編寫的網頁小游戲,很給力

以下為游戲代碼:var timerID null;var INT 40;var loadFLG 0;var gameFLG 0;var missFLG 0;var tim 0;var blcol new Array(5); // block colorvar blsta new Array(40); // block statusvar blNO new Array(40); // block Novar blclr 0; // clear block…

c 插件讀取有屬性的html6,廖雪峰的JS教程6-jQuery

jQueryjQuery是JavaScript世界中使用最廣泛的一個庫。jQuery這么流行,肯定是因為它解決了一些很重要的問題。實際上,jQuery能幫我們干這些事情:消除瀏覽器差異:你不需要自己寫冗長的代碼來針對不同的瀏覽器來綁定事件,…

html5中的css特性,淺談HTML5 CSS3的新交互特性

本文標題的這副圖片,是用phosotshop制作的。但是,在搜索引擎中你卻無法搜索到它,搜索引擎還沒有強大到能夠識別圖片里面的文字。并且由于圖片的體積不算太小,可能網速慢的網友在瀏覽的時候不得不耐心的等待圖片的刷新。那么&#…

html表格通過郵件發送,通過html表格發電子郵件

[email protected]>Create this tableThe field "what" is for different categoriesCREATE TABLE email_notify (ID int(11) DEFAULT ‘0‘ NOT NULL,What varchar(60) DEFAULT ‘0‘ NOT NULL,Name varchar(60) DEFAULT ‘0‘ NOT NULL,Email varchar(60) DEFAU…

計算機專業知識多選題證監會,2019年國家公務員考試中國證監會(計算機類)專業科目考試大綱...

2019年國家公務員考試中國證監會(計算機類)專業科目考試大綱由國家公務員考試網公告解讀欄目由提供,更多關于2019國家公務員考試大綱,計算機類國考考試大綱,證監會國考考試大,國家公務員考試公告解讀的內容,請關注國家公務員考試網/廣東公務員考試網&…

計算機和網絡老是斷開,電腦插上網線還是顯示斷開連接怎么辦

在網絡故障處理中遇到過千奇百怪的問題,這里就說一個比較怪異的問題。一個網線插口,有的電腦插上網線可以正常上網,而有的電腦插上就顯示斷開連接。試了好多辦法,換了網線,換了插口,換了路由器,…

計量經濟學第六版計算機答案,伍德里奇計量經濟學導論計算機習題第六章第13題c_6.13...

伍德里奇計量經濟學導論計算機習題第六章第13題,答案和MATLAB代碼clear,clc;% c6.13 by% 打開文字文件和數據文件importdata(meap00_01.des);dataxlsread(meap00_01);% 檢驗所用數據是否為非空Isnanisnan(data(:,[3,5,8,9]));asum(Isnan);bfind(a0);data1data(b,:);% 變量命名m…

思品課如何使用計算機教學課件,小學思品獲獎論文巧用多媒體,優化思品課堂教學...

小學思品獲獎論文巧用多媒體,優化思品課堂教學摘要:信息技術輔助課堂教學,有利于促進思想品德課教學內容呈現方式、教師教學方式、學生學習方式和師生互動方式的變革。利用信息技術能提高學生學習思想品德的興趣;有利于培養學生的…

計算機網絡的資源共享功能包,計算機網絡的資源共享功能包括

資源共享是現代計算機網絡的最主要的作用,它包括軟件共享、硬件共享及數據共享。在網絡中,多臺計算機或同一計算機中的多個用戶,同時使用硬件和軟件資源。通常多用戶同時需要的資源總是超過系統實際物理資源的數量,但采用邏輯(或虛…

《計算機應用基礎》期末試卷.,《計算機應用基礎》期末試卷(A卷)《計算機應用基礎》期末試卷(A卷).doc...

廣東外語藝術職業學院成人高等教育2012學年第 一 學期 三年 制2012級 初等教育專業計算機應用基礎課程 期末 考試試題試卷類型:A 考試形式:閉卷本試題共 五 大題, 4 頁,滿分 100 分,考試時間為 120 分鐘,答…

計算機學院嘉年華標題,“芯動盛夏 AI創南航” 計算機學院舉辦第八屆計算機嘉年華...

當前,我們正迎來一個科技主導的全智能時代,為激發大家學習探索人工智能的興趣,切身感受AI科技的魅力所在,計算機科學與技術學院/人工智能學院于6月20日在體育館廣場舉辦了“芯動盛夏 AI創南航”第八屆計算機嘉年華活動。活動中&am…

計算機網絡與通信02339,4月全國高等教育自學考試計算機網絡與通信試題及答案解析.docx...

4月全國高等教育自學考試計算機網絡與通信試題及答案解析.docx精品自學考試資料推薦全國 2018 年 4 月高等教育自學考試計算機網絡與通信試題課程代碼 02339一、單項選擇題本大題共 15 小題,每小題1 分,共 15 分 在每小題列出的四個備選項中只有一個是符…

計算機考研百天,2015考研計算機專業復習百天周計劃

計算機百天沖刺周計劃學習目標篇百天計劃第一周(9月26日—10月6日)1.完成數據結構中線性表的復習;并配以習題鞏固練習。2.完成強化課程數據結構第一章的學習,重難點針對復習。3.完成數據結構中棧,隊列和數組的復習; 并配以習題鞏固練習。4.完成強化課程數…

愛爾蘭都柏林圣三一大學計算機排名,2021年愛爾蘭都柏林圣三一大學世界及專業排名 不愧是最古老的學府!...

它是參照牛津和劍橋大學模式興建的歐索世界頂級研究型大學,其商學院也是歐洲培養企業家最多的商學院之一,這所名校就是愛爾蘭都柏林圣三一大學,該校的科研實力雄厚,因此,每年都會吸引一大批的學子前往該校留學&#xf…

計算機系統的四種啟動方式是,電腦啟動方式有幾種你知道嗎?

關于電腦啟動方式有幾種,可能你會說,電腦啟動不就是按電源按鈕啟動嗎?實際上,電腦有三種啟動方式,而且三種啟動方式會對應不一樣情況,雖然有些概念對現在的電腦略微有一點點落后,但是對于玩電腦…