1默认分配一块大的内存区域(类似内存池,默认大小是100M,构造的时候可以自己指定区域的大小),后期根据需要的内存动态增加新的内存区域(默认大小也是100M,如果需要使用的内存超过100M将会分配需要使用的内存加上最小范围值),以链表的形式进行链接;
2.使用链表结构标记已使用和已归还的内存范围;
3.每次获取内存时先从已归还的内存结构中进行匹配,如果没有匹配到合适的内存大小,将从内存区域中划分出一块新的内存使用;
4.增加每段内存的保护字节:1.最小范围值 默认为1个字节,2.最大范围值 默认为2个字节。每次获取内存时首先根据 ( 大于等于需要的内存加最小范围值 或 <= 需要的内存加最大范围值 )进行匹配已归还的内存结构;
5.内存区域以及内存链表结构都是使用计数表示在相同类型中的指定位置
6.清除指定内存区域(内存池)时,把标记使用这块内存的链表内存置为空,等待下次分配使用;
7.链表内存结构只会在对象析构的时候进行释放,保证了内存分配速度越来越快并且稳定的情况(不在对象使用的时候进行删除链表内存节点,保证了内存分配的效率);
8.对象析构的时候会释放掉所有的内存区域(内存池)以及链表内存结构,保证了结构的稳定性。