1. Android中的应用层每申请一个Surface,最终会通过jni和binder调用到surfaceflinger中,最终会创建一个Layerxxx(Layer,LayerBuffer,LayerBlur,LayerDim)类,最通常的是Layer类,在Layer类中有一个成员变量:

sp<GraphicBuffer> mBuffers[NUM_BUFFERS];

Layer的成员函数SetBuffers()初始化了该数组:

for (size_t i=0 ; i<NUM_BUFFERS ; i++) {
mBuffers[i] = new GraphicBuffer();
}

其中,NUM_BUFFERS的定义是2,也就是说,android为每个Layer分配了两个显示缓冲,以便于做出PageFlip的动作。

2. GraphicBuffer作为显示内存的管理类,负责显示内存的申请和释放。

Android GraphicBuffer_第1张图片

分配和释放显存有辅助类GraphicBufferAllocator完成,lock和unlock则是由辅助类GraphicBufferMapper来完成。这两个辅助类都会调用HAL层的模块gralloc来完成和底层驱动程序的交互。




更多相关文章

  1. Android性能优化——合理进行内存管理
  2. (Android Studio 3.0)Android Profiler内存泄漏检查
  3. android 的内存、内部存储和外部存储的理解/cache/system。
  4. Android JNI编程内存问题定位方法
  5. android 进程内存查看
  6. Android内存泄露检测(LeakCanary)
  7. Android 内存溢出问题分析
  8. 转:Android内存管理机制

随机推荐

  1. I hope Android will implement and supp
  2. Android 2.3 r1 中文API (78)―― ViewAnim
  3. Android Service生命周期
  4. 读书计划
  5. Android Fingerprint中的IPC(Binder)
  6. Android多国语言使用
  7. android中视频播放的处理
  8. ListView如何去掉无所谓的阴影
  9. 做了一个手机上的直播系统
  10. android sqlite数据库封装 实现crud