Android 作業系統的記憶體回收機制

來源:互聯網
上載者:User

標籤:back   ica   ref   and   組件   佔用   不能   作業系統   移動   

轉自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/index.html

Android APP 的執行環境

      Android 是一款基於 Linux 核心,面向移動終端的作業系統。

為適應其作為移動平台作業系統的特殊須要。Google對其做了特別的設計與最佳化,使得其進程調度與資源管理與其它平台的 Linux 有明顯的差別。主要包括以下幾個層次:

Application Framework

      Application Framework 將整個作業系統分隔成兩個部分。相應用開發人員而言,全部 APP 都是執行在 Application Framework 之上。而並不須要關心系統底層的情況。Application Framework 層為應用開發人員提供了豐富的應用編程介面。如 Activity Manager,Content Provider,Notification Manager。以及各種表單 Widget 資源等。在 Application Framework 層,Activity 是一個 APP 最主要的組成部分。一般每一個 Activity 相應於螢幕上的一個視圖(或者說一屏),一個 APP 可以有一個或者多個 Activity。應用程式被打包成 .apk 格式的檔案,由 Dalvik VM 解釋執行。

Dalvik VM

      Dalvik 虛擬機器採用寄存器架構,而不是 JVM 的棧結構。Java 程式編譯後的 .class 檔案並不能在 Dalvik 中解釋執行。因此 Google 提供了一個 dx 工具,用於將 .class 檔案轉換成 Dalivk 可以識別的 .dex 格式。

詳細 Dalvik VM 的細節不是本文重點,以下不再討論。

Linux kernel

      由上所述,全部的 APP 都是由 Java 代碼編寫並在 Dalvik VM 中得到解釋執行。在 Android 作業系統中,每一個 Dalvik VM 的每一個 Instance 都相應於 Linux 核心中的一個進程。可以使用 adb shell 工具查看系統中的當前進程。

例如以所看到的。Android2.3.3 啟動後核心中的進程列表。


UID 標識為 app_xx 的每一項都是一個 app 所佔用的進程,可見 Android 設計使得每一個應用程式由一個獨立的 Dalvik 執行個體解釋執行,而每一個 Linux 核心進程載入一個 Dalvik 執行個體。通過這樣的方式提供 app 的執行環境。如此,每一個 APP 的資源被全然屏蔽,互不干擾。

儘管同一時候引入了處理序間通訊的困難,但也帶來了更強的安全性。

Android 記憶體回收原則

      以下將從 Application Framework 和 Linux kernel 兩個層次分析 Android 作業系統的資源管理機制。
      Android 之所以採用特殊的資源管理機制,原因在於其設計之初就是面向移動終端,全部可用的記憶體僅限於系統 RAM,必須針對這樣的限制設計相應的最佳化方案。當 Android 應用程式退出時。並不清理其所佔用的記憶體,Linux 核心進程也相應的繼續存在,所謂“退出但不關閉”。

從而使得使用者調用程式時可以在第一時間得到響應。當系統記憶體不足時,系統將啟用記憶體回收過程。

為了不因記憶體回收影響使用者體驗(如殺死當前的活動進程),Android 基於進程中執行的組件及其狀態規定了預設的五個回收優先順序:

IMPORTANCE_FOREGROUND:IMPORTANCE_VISIBLE:IMPORTANCE_SERVICE:IMPORTANCE_BACKGROUND

Android 作業系統的記憶體回收機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.