ACE内存管理方式

ACE框架提供两组不同的类用于内存管理。

1、基于ACE_Allocator的类,该类使用动态绑定和策略模式来提供灵活性和可扩展性,只能用于局部的动态内存分配,具有一定的灵活性。

2、基于ACE_Malloc模板类,该类使用C++模板和外部多态性来为内存分配机制提供灵活性,不仅用于局部动态内存管理,还用于进程间共享内存,效率高,但灵活性没有ACE_Allocator好。 

分配器描述

ACE_Allocator 
ACE中的分配器类的接口类。这些类使用继承和动态绑定来提供灵活性。

ACE_Static_Allocator 
该分配器管理固定大小的内存。每当收到分配内存的请求时,它就移动内部指针、以返回内存chunk(“大块”)。它还假定内存一旦被分配,就再也不会被释放。

ACE_Cached_Allocator 
该分配器预先分配内存池,其中含有特定数目和大小的内存chunk。这些chunk在内部空闲表(free list)中进行维护,并在收到内存请求(malloc())时被返回。当应用调用free()时,chunk被归还到内部空闲表、而不是OS中。

ACE_New_Allocator 
为C++ new和delete操作符提供包装的分配器,也就是,它在内部使用new和delete操作符,以满足动态内存请求。

内存池:

ACE_MMAP_Memory_Pool 
ACE_MMAP_MEMORY_POOL 
使用<mmap(2)>创建内存池。这样内存就可在进程间共享了。每次更新时,内存都被更新到后备存储(backing store)。

ACE_Lite_MMAP_Memory_Pool 
ACE_LITE_MMAP_MEMORY_POOL 
使用<mmap(2)>创建内存池。不像前面的映射,它不做后备存储更新。代价是较低可靠性。

ACE_Sbrk_Memory_Pool 
ACE_SBRK_MEMORY_POOL 
使用<sbrk(2)>调用创建内存池。

ACE_Shared_Memory_Pool 
ACE_SHARED_MEMORY_POOL 
使用系统V <shmget(2)>调用创建内存池。

Memory_Pool   
内存可在进程间共享。

ACE_Local_Memory_Pool 
ACE_LOCAL_MEMORY_POOL 
通过C++的new和delete操作符创建局部内存池。该池不能在进程间共享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值