您的位置:首页 > 移动开发 > Objective-C

网游服务器和内存碎片

2011-05-20 10:05 295 查看
这个看似一个很简单的概念,但有些细节可能会漏掉。

      直接用默认的new(malloc)/delete(free),如果C库内部没有用一个memory pool,kernel肯定会出现碎片。有的C库如果提供一个

公用memory pool有没有意义呢?个人认为意义不大,这种情况下,kernel碎片消失了,但C库的pool还是会出现碎片。问题没得到根本

的解决,只是碎片从地方转移到另外一个地方而已。有人也有可能实现一个自己的公共的memory pool,效果和C库的memory pool是一样

的。

      实际中,可以考虑用一个专有的memory pool(可以称为object manager),系统启动时,预创建N个object,一般建议N取系统可能用

到的对象的最大值。运行的过程中,需要一个object就从这个专有的memory pool中取,不用了放回到这个pool中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息