android内存管理了解_第1页
android内存管理了解_第2页
android内存管理了解_第3页
android内存管理了解_第4页
android内存管理了解_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1会计学android内存管理了解内存管理了解。nashmem_area有个unpinned_list成员,挂在这个list上的range可以被回收。ashmem_range有一个LRU链表,在cache shrink回收一个ashmem_area的某段内存时候,是根据LRU的原则来选择哪些页面优先被回收的。Ashmem的基本结构ashmem_shrink 即Ashmem的cache shrink函数。它被mm/vmscan.c:shrink_slab调用,或者被用户的 ioctl 命令调用。这个函数从LRU链表上回收指定数目的 unpinned ashmem_range。 ashmem_io

2、ctl 这个函数提供ioctl 接口,它实现了如下命令: ashmem_unpin unpin一段内存。实现的方法很简单,就是分配一个ashmem_range,把它挂到ashmem_area - unpinned_list上,并加到 LRU链表上。 ashmem_pin pin一段内存,从 ashmem_area-unpinned_list上拿下这个 ashmem_range,由此可知,被unpin的range才能被回收,pin的range则不能回收。 用户接口 Ashmem驱动创建了/dev/ashmem设备文件,进程A可通过open打开该文件,用ioctl命令ASHMEM_SET_NAME

3、和ASHMEM_SET_SIZE设置共享内存块的名字和大小,并将得到的handle传给mmap,来获得共享的内存区域,进程B通过将相同的handle传给mmap,获得同一块内存,handle在进程间的传递可通过Binder来实现。 Ashmem域在虚拟空间是连续的,物理内存却不一定连续。dsp和某些设备只能工作在连续的物理内存上,这样cpu与dsp之间的通信就需要通过Pmem来实现。android模式linux模式所有的对象都有一个相同的头部clazz和lock。(1)clazz:clazz指向该对象的类对象,类对象用来描述该对象所属的类,这样可以很容易的从一个对象获取该对象所属的类的具体信息

4、。(2)lock:是一个无符号整数,用以实现对象的同步。(3)data:存放对象数据,根据对象的不同数据区的大小是不同的。内存管理的主要操作之一是为Java对象分配内存,Java对象在虚拟机中的内存布局如下: 虚拟机的实现不进行可选的Compact阶段。线程的运行又引入了新的访问对象。因此在Sweep阶段,又重新运行mark阶段,但是在这个阶段对于已经mark的对象可以不用继续递归追踪了。这样从一定程度上降低了程序停顿时间。HAL 的目的是为了把 Android framework 与 Linux kernel 完整隔开HAL 的过去 HAL 的现实状况 过去的 libhardware_leg

5、acy 作法,比较是传统的module方式,也就是将 *.so 档案当做透过直接函数呼叫的方式,来操作驱动程序。 当然,应用程序也可以不需要透过 JNI 的方式进行,直接以加载 *.so 檔(dlopen)的做法呼叫 *.so 里的符号(symbol)也是一种方式。 shared library来使用,在 runtime(JNI 部份)以 direct function call 使用 HAL module。现在的 libhardware 作法,就有stub的味道了。HAL stub 是一种代理人(proxy)的概念,stub 虽然仍是以 *.so 檔的形式存在,但 HAL 已经将 *.so 档隐藏起来了。Stub 向 HAL提供操作函数(operations),而 runtime 则是向 HAL 取得特定模块(stub)的 operations,再 callback 这些操作函数。这种以 indirect function call 的实作架构,让 HAL stub 变成是一种包含关系,即 HAL 里包含了许许多多的 stub(代理人)。Runtime 只要说明类型,即 module ID,就可以取得操作函数。 ashmem_shrink 即Ashmem的cache shrink函数。它被mm/vmscan.c:shrink_slab调用,或者被用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论