MSM7627的內存分佈圖

Android手機的童鞋們可能經常會有這樣的疑問,爲什麼我的G2手機明明是256M的內存,可用任務管理器或者free之類的命令,看到的實際值會遠遠小於256。看到網上的很多誤導言論,這裏我給大家澄清一下吧:

    無圖無真相,貼張MSM7627的內存分佈圖,一目瞭然:

Android  


    由上圖可以看到,內存主要分給modem/bootloader/SMEM/pmem/Android幾個部分使用:

    1、modem/bootloader/SMEM部分一般會佔用40M~50M的內存,上圖佔用了43M。這部分主要用於跑AMSS、bootloader及RPC。如果你有源碼的話,可以在device\qcom\msmxxx/Boardconfig.mk看到。還有一種方法,可以用adb pull /proc/config.gz .將config.gz文件dump下來,裏面可以看到分配給linux的內存大小,用物理內存總大小減去這部分,就可以得到這部分的內存總開銷。

    2、Pmem一般會佔用40M的內存,上圖佔用了38M左右。系統的framebuffer\mdp\video等都會用到這部分memory。如果你有源碼的話,可以在kernel/arch/arm/mach-msm/Board-xxx.c文件中看到Pmem的分配情況。譬如:

    #define MSM_PMEM_MDP_SIZE 0x1B76000

    #define MSM_PMEM_ADSP_SIZE 0xAE4000

    #define MSM_PMEM_AUDIO_SIZE 0x5B000

    #define MSM_FB_SIZE 0x177000

    #define MSM_GPU_PHYS_SIZE 0x177000

    #define PMEM_KERNEL_EBI1_SIZE 0x1C000

    3、最後是給用戶空間使用的memory,用free或者cat /proc/meminfo等命令看到的是這部分的memory大小。大小是之前第一步傳給linux kernel的memory大小減去pmem的佔用部分再減去linux kernel和ramdisk大小。

發佈了9 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章