RK3399平台开发系列讲解(内存篇)18.5为什么需要Slab
Posted 内核笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RK3399平台开发系列讲解(内存篇)18.5为什么需要Slab相关的知识,希望对你有一定的参考价值。
为什么需要Slab
平台 | 内核版本 | 安卓版本 |
---|---|---|
RK3399 | Linux4.4 | android7.1 |
内存碎片问题
首先内核会频繁的分配和释放内存,由于每次分配和释放的数据结构不同,所以不可避免的产生内存碎片,也就是内存中存在很多无法使用的小内存段,这时候如果去申请一段比较大的连续内存,即使系统显示可用内存够用也会导致内存分配失败。
数据缓存
为了提高模块的性能,很多程序员会新建很多空闲链表,也就是说提前在系统中建好特定数据结构的链表,当需要使用内存的时候直接去填充空闲链表即可,直接填充数据要比申请内存、分配内存、填充内存性能要好的多。但是这样使用内存会带来一个问题:Linux
内核有很多模块,如果每个模块、驱动为了提高性能都去新建一个空闲链表,这时候系统内存很快就会耗尽。另外,这些链表并不是全局的,系统想要释放内存的时候
以上是关于RK3399平台开发系列讲解(内存篇)18.5为什么需要Slab的主要内容,如果未能解决你的问题,请参考以下文章