游戏服务器端开发1-对象池技术及实现

一、由问题产生的思考

游戏服务器要求的是稳定,高并发和客户端请求的快速响应,但new和delete的次数增加将增加运行时间,降低服务器的运行效率,增加内存碎片,过激的情况下,还将导致服务器内存耗尽。同时,new和delete用得不恰当还将导致内存泄露。


二、使用对象池的好处

为了解决以上提出的问题,最好的解决方法就是对象池。

1.使用对象池可以减少从头创建对象的系统开销,减少new,delete次数,减少运行时间,从而提高运行效率。

2.减少new,delete次数过多产生的内存碎片。

3.内存统一管理,避免内存泄露。当需要使用对象时,向对象池中申请,不用的时候,归还到对象池中,一次new,重复利用。


三、具体实现

设计构思:

1.一个对象池包含:

pUseBlockList(可用内存块列表)

pDisBlockList(不可用内存块列表)

2.一个内存块包含:

UnitCount(保存一个内存块一共有多少个内存单元)

First(保存一个内存块下一个要被分配的内存单元的序号)

pBlock(保存一个内存块的头指针)

pPrevBlock(指向上一内存块指针)

pNextBlock(指向下一内存块指针)

pFreeUnitList(空闲内存单元列表)

3.一个内存单元包含:

pNextUnit(保存下一内存单元指针)

pMemoryBlock(该内存单元属于哪一个内存块指针)

T(对象数据)


四、效果展示与源码


通过以上一个不是很科学测试结果显示,一千万个对象,使用对象池的运行效率比普通new和delete对象提高了50%以上,从而达到了提高运行效率和减少内存碎片的作用。


源码链接:点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值