手机版
你好,游客 登录 注册
背景:
阅读新闻

Android 内存分配小结

[日期:2010-11-18] 来源:CSDN  作者:long19851105 [字体: ]

    有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大小。

linux
相关资讯       Android 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款