Netty内存池之内存分配算法
1.总览
-
动态内存分配
-
伙伴算法
-
Slab算法
2.动态内存分配
介绍
全程 Dynamic memory allocation,又称为堆内存分配,简称DMA。简单来说就是想要多少内存空间,操作系统就给你多少。在大部分场景下,只有在程序运行时才知道所需内存空间大小,提前分配的内存大小空间不好把控,分配太多造成空间浪费,分配太少造成程序崩溃
DMA就是从一整块内存中按需分配,对于已分配的内存会记录元数据,同时还会使用空闲分区维护空闲内存,便于在下次分配时快速查找可用的空闲分区,常见的的有三种查找策略:首次适应算法,循环首次适应算法,最佳适应算法
首次适应算法(first fit)
空闲分区存储结构
空闲分区链以地址递增的顺序将空闲分区以双向链表的形式连接在一起
分配逻辑
-
从空闲分区链中找到第一个满足分配条件的空闲分区
-
然后从空闲分区中划分出一块可用内存给请求进程
<