- Linux內存管理機制
- 虛擬內存:將外部存儲器劃分一部分拓展空間,內存不足時系統選取優先級較低的代碼塊轉移到拓展空間中,之后若用到被轉移的代碼塊則交換轉移回來。此過程由系統自動完成,對上層完全透明
- COW(copy on write):多個對象在起始時共享某個資源,只有在某個對象需要進行修改時才為其開辟一份自己的拷貝。避免了不必要的資源操作,提升了運行速度
- 內存保護:分段與分頁管理
- 存儲分配與回收
- 需要保證操作系統向上透明
- 動態分配存儲與回收
- 已分配的內存釋放造成內存碎片的問題
- OOMKiller
- 系統可以內存達到臨界值時按照一定優先順序回收內存
- 內核內每個進程都有一個權重值oom_adj,根據權重、進程消耗內存、進程占用CPU時間為進程評分oom_score,分數越低被收回得越晚
- 虛擬內存:將外部存儲器劃分一部分拓展空間,內存不足時系統選取優先級較低的代碼塊轉移到拓展空間中,之后若用到被轉移的代碼塊則交換轉移回來。此過程由系統自動完成,對上層完全透明
- Android Low Memory Killer(LMK)
- 設置shrinker監聽回調機制,系統空閑內存低于某一檔值后就會回收優先級低于對應檔權重的進程
- lowmem_minfree數組定義系統預定義的空閑內存{6MB,8MB,16MB,64MB};lomem_adj數組定義系統預定義對應層級需要被處理的adj值{0,1,6,12}(取值范圍-17——15),數值越大,進程級別越低。(可以自定義修改這兩個數組)
- 在AndroidManifest.xml中為application標簽添加“android:persistent=true”屬性,可以將此應用程序設置為常駐內存,但是要保證程序本身足夠完善,不會導致系統內存泄漏
8.24
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- Android 的設計理念之一,便是應用程序退出,但進程還會繼續存在系統以便再次啟動時提高響應時間. 這樣的設計會...
- 本篇文章是后臺殺死系列的最后一篇,主要探討一下進程的保活,Android本身設計的時候是非常善良的,它希望進程在不...