zoukankan      html  css  js  c++  java
  • 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.c  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 用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。   源代码位于drivers/misc/pmem.c 

      Android Logger ,一个轻量级的日志设备,用于抓取Android 系统的各种日志。 源代码位于drivers/staging/Android/logger.c 

      Android Alarm ,提供了一个定时器用于把设备从睡眠状态唤醒,同时它也提供了一个即使在设备睡眠时也会运行的时钟基准, 源代码位于drivers/rtc/alarm.c 

      USB Gadget 驱动 ,一个基于标准Linux USB gadget 驱动框架的设备驱动,Android的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内核线程和低级的内存管理。

  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/qingblog/p/2597836.html
Copyright © 2011-2022 走看看