美文网首页
空间配置器

空间配置器

作者: 寿寿_32206 | 来源:发表于2018-08-12 00:07 被阅读0次

空间的配置和释放

1、考虑到小型区块所可能造成的内存破碎问题,SGI 设计了双层级配置器 a:  第一级配置区块超过128kb 用malloc()  free() ,第二级 小于128  采用复杂的memory pool(内存池),又称为次层配置

第一级配置器   

template<int inst>

class _malloc_alloc_templae{...}

其中:1、 allocate() 直接使用malloc   dealallocate 使用 free()   2、模拟的c++ 的set_new_hander()处理内存不足的状况

第二级配置器

template<bool threads, int inst>

class _default_alloc_template {};

其中: 1、维护16 个自由链表(free lists),负责16种小型区块的次配置能力。 内存池(memory pool )以malloc() 配置而得,如果内存不足,转调用第一级配置器 。2、如果需求区块大于128 ,就转调用1级 

注意:

第一级配置器的allocate() 和realloc() 都是在调用 malloc() 和 realloc() 不成功后改调用oom_malloc() 和 oom_realloc(),后者都有内循环,不断调用 “内存不足的处理例程” ,期望在某次调用后,获取足够得内存,完成任务。如果未被客户端设定,oom_malloc() 和oom_realloc() ,则程序会调用_THROW_BAD_ALLOC 丢出bad_alloc  异常信息,或者利用exit(1)  硬生生得终止程序

第二配置器 多了一些机制,避免太多得小额区块造成内存碎片,以及配置时候得额外负担(无法避免),区块越小,额外负担所占得比例就越大,显得越浪费

相关文章

  • 配置器(allocator)

    配置器(allocator) 配置器:负责空间配置与管理,从实现的角度来看,配置器是一个实现了动态空间配置、空间管...

  • STL源码剖析

    空间配置器 分为第一级空间配置器,和第二级空间配置器 配合使用 第一级空间配置器分配大内存大于128bytes...

  • 空间配置器

    2.空间配置器 2.1具备次配置力(sub-allocation)的SGI空间配置器 SGI含有两个空间配置器类,...

  • STL源码解析-空间配置器

    STL源码解析-空间配置器 STL中非常重要的一个模块就是空间配置器,用来管理程序内存的。 空间配置器 这是stl...

  • 空间配置器

    空间的配置和释放 1、考虑到小型区块所可能造成的内存破碎问题,SGI 设计了双层级配置器 a: 第一级配置区块超过...

  • allocator详解

    STL空间配置器allocator详解

  • 第十九章 使用系统监视器 - 配置系统监视器命名空间

    第十九章 使用系统监视器 - 配置系统监视器命名空间 配置系统监视器命名空间 当一个实例启动时,系统监视器会在每个...

  • 2.1 空间配置器(allocator)

    空间配置器隐藏在一切组件之后。 1.1 设计一个简单的空间配置器 根据STL的规范,以下是allocator的必要...

  • SGI空间配置器

    标准配置器 SGI定义有一个符合标准的配置器std::allocator,但这个配置器并没有对内存分配做任何优化,...

  • STL空间配置器-构造析构

    STL空间配置器-构造析构 STL空间配置器实际上包括两部分,一部分是空间的分配,另外一部分就是构造函数、析构函数...

网友评论

      本文标题:空间配置器

      本文链接:https://www.haomeiwen.com/subject/imlpvftx.html