Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android內存管理

Android內存管理

編輯:Android開發實例

  1.Android和 Android 內存管理基本介紹

  Android 內核是基於Linux 2.6內核的(目前最新開發版本是2.6.31),它是一個強內核版本,除了修改部分 Bug 外,它提供了用於支持 Android 平台的設備驅動,其心驅動主要包括:

  Android Binder ,基於OpenBinder框架的一個驅動,用於提供Android平台的進間通訊(IPC,inter-process communication)。 源代碼位於drivers/staging/Android/binder.c

  Android 電源管理(PM) ,一個基於標准Linux電源管理系統的輕量級的Android源管理驅動,針對嵌入式設備做了很多優化。源代碼位於kernel/power/earlysuspend.

  kernel/power/consoleearlysuspend.c  kernel/power/fbearlysuspend.c

  kernel/power/wakelock.c           kernel/power/userwakelock.c

  低內存管理器(Low Memory Killer) ,相對於Linux標准 OOM(Out Of Memory機制更加靈活,它可以根據需要殺死進程來釋放需要的內存。 源代碼位於drivers/staging/Android/lowmemorykiller.c

  匿名共享內存(ashmem) ,為進程間提供大塊共享內存,同時為內核提供回收和理這個內存的機制。源代碼位於mm/ashmem.c

  Android PMEM(Physical) ,PMEM 用於向用戶空間提供連續的物理內存區域,D和某些設備只能工作在連續的物理內存上。源代碼位於drivers/misc/pmem.c

  Android Logger ,一個輕量級的日志設備,用於抓取Android 系統的各種日志。 代碼位於drivers/staging/Android/logger.c

  Android Alarm ,提供了一個定時器用於把設備從睡眠狀態喚醒,同時它也提供了個即使在設備睡眠時也會運行的時鐘基准,源代碼位於drivers/rtc/alarm.c

  USB Gadget 驅動 ,一個基於標准Linux USB gadget 驅動框架的設備驅動,Andro的USB驅動是基於gaeget框架的,源代碼位於drivers/usb/gadget/

  Android Ram Console ,為了提供調試功能,Android允許將調試日志信息寫入一被稱為RAM Console的設備裡,它是一個基於RAM的Buffer。源代碼位於drivers/staging/Android/ram_console.c。

  每個Android應用都運行在一個單獨的進程在它自己的Dalvik的實例,負責所有的Android運行時的內存和進程管理的責任,停止和死亡過程的必要的管理資源。

  Dalvik 和Android運行時間在一個Linux內核,處理低層次的硬件交互,包括驅動程序和內存管理,其API提供下層的服務,功能,和硬件的訪問。

  Dalvik虛擬機是基於寄存器的虛擬機的優化,以確保設備可以有效地運行多個實例。 它依賴於Linux內核線程和低級的內存管理。

  2.Dalvik虛擬機

  Android的關鍵要素之一是Dalvik虛擬機。 而不是使用傳統的Java虛擬機(VM)中,如Java ME(Java移動版),Android使用自己的定制設計,以確保有效地在單個設備上運行多個實例的虛擬機。

  Dalvik虛擬機,使用Linux內核處理低級別的功能,包括安全,線程,進程和內存管理。

  所有的Android硬件和系統服務的訪問的管理使用作為中間層的 Dalvik。 通過使用一個虛擬機,主機應用程序的執行,開發人員有一個抽象層,以確保他們從來沒有擔心一個特定的硬件實現。

  Dalvik虛擬機執行的Dalvik可執行文件格式,優化,以確保最小的內存足跡。 改造Java語言編譯後的類的使用在SDK提供的工具創建.dex可執行文件。

  3.理解應用優先級和過程狀態

  下面的列表詳細介紹每一個如圖所示的應用程序狀態,並解釋如何取決於應用程序組件,包括它的狀態是:

  活動進程的活動(前台)進程是那些目前與用戶交互的組件宿主應用程序。 這些都是Android是試圖保持響應回收資源的過程。 通常有極少數的這些過程,他們將只作為最後的手段殺害。

  活動進程包括:

  活動中的一個“活躍”狀態,也就是說,他們在前台和響應用戶事件。 您將探索在
更詳細的活動狀態,在本章後面。 
活動,服務或廣播接收機,當前正在執行的onReceive事件處理程序。 
服務正在執行一個緩動的onCreate,或OnDestroy事件處理程序。

  可見進程可見,但處於非活動狀態的進程是那些主辦的“看得見”的活動。 顧名思義,可見活動是可見的,但他們不是在前台或響應用戶事件。 這發生在一個活動僅是部分遮蔽(非全屏或透明的活動)。 通常有很少的可見的進程,他們將只在極端情況下被殺害,讓活動的進程繼續。

  啟動的服務進程的進程已經啟動的托管服務。 服務支持正在進行的處理,應繼續沒有明顯的界面。 因為服務不直接與用戶交互,他們收到一個稍微較低的優先級比可見光活動。 他們仍然被認為是前台進程,並不會被殺死,除非活動或可見的進程所需要的資源。

  後台進程的進程舉辦活動是不可見的,並沒有任何被認為是後台進程已經啟動的服務。 一般將有大量的後台進程,Android將殺死最後一個看到的第一個死亡的圖案獲得前台進程的資源。

  空流程提高了整體系統性能的Android經常在內存中保留的申請後,他們達成的結束其一生。  Android維護這個緩存的提高應用程序的啟動時間時,他們再次推出。 這些過程是柔tinely殺害。

  4.How to use memory efficiently如何有效地使用內存

  Android 的管理打開的應用程序是在後台運行,所以你不應該關閉這個。同時這意味著,關閉應用程序時,系統需要更多的內存。 然而,大多數Android 用戶不是很滿意,它的東西它是如何,因為有時留下太多的進程運行,從而導致在日常生活中表現呆滯。 我們可以利用先進的任務殺手/任務管理器和它的工作非常好。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved