brd-mem-pool
2016-07-27 09:39:08 0 举报
brd-mem-pool是一个内存池,用于管理计算机系统中的物理内存。它的主要目的是提高内存分配和释放的效率,减少内存碎片,并确保内存的合理使用。通过预先分配一定数量的内存块,brd-mem-pool可以在需要时快速地分配内存,避免了频繁地调用操作系统的内存分配函数,从而提高了系统的性能。同时,brd-mem-pool还可以在内存不再使用时及时回收,避免内存泄漏。总之,brd-mem-pool是一个非常重要的内存管理工具,对于提高计算机系统的性能具有重要作用。
作者其他创作
大纲/内容
brd_memory_pool
+ close()+ start()+ New()+ Delete()+ getAllElementsData()+ getElementsPtr()+ correctBlock()
- CshareMemoryMsgClient- vector
cgtp_gnc_memory_mgr
- CshareMemoryMsgClient- MultiBlockMemoryPoolMgr
+ startUp()+ correctBlock()+ New()+ Delete()+ NewMemoryBlock()+ getAllElementsData()+ getElementsPtr()+ getElementsNum()+ getBlockNum()+ _initMemoryBlock()
CshareMemoryMsgClient分配共享内存, MultiBlockMemoryPoolMgr管理内存块,对象的分配、释放都通过后者
MultiBlockMemoryPoolMgr
+ addNewMemoryBlock()+ newElement()+ deleteElement()+ getAllElementsData()+ getElementsPtr()+ correctBlock)
- hash_map
SingleMemoryPoolMgr
+ getDataBlockHeaderPtr()其他接口与MultiBlockMemoryPoolMgr一致
- CGncSystemVShareMemory- BLOCK_HEADER *_pblockHeader- DATA_BLOCK **_pContentBlock- BLOCK_INFO stBlockInfo
CGncSystemVShareMemory
+ CreateShareMemory()+ OpenShareMemory()+ ReadShareMemory()+ WriteShareMemory()
CshareMemoryMsgClient::RequestNewMemoryBlock() call CGncSystemVShareMemory::CreateShareMemory()
CshareMemoryMsgClient
+ RequestNewMemoryBlock()+ getAllBlockKeyIdFromServer()+ getBlockMap()
brd_memory_pool为用户接口在Cmerge::StartUp()中调用brd_memory_pool::start(),由CshareMemoryMsgClient去attach共享内存,然后由cgtp_gnc_memory_mgr负责内存块的申请、释放管理
//内存块头部信息。typedef struct MemBlockHeader{ int type;//内存块存储的内容类别 int TypeLength;\t//内容类型长度\t \t int usedNum;\t//使用过的数据块的数目 int unusedNum;\t//未使用的数据块数目 bool initBlock;//内存块是否被初始化 uint32_t uiVersion;//内存块版本} BLOCK_HEADER;
New和Delete用于分配BLOCK_INDEX
addNewMemoryBlock将CshareMemoryMsgClient分配的共享内存,keyid传给SingleMemoryPoolMgr对象
0 条评论
下一页