网游服务器和内存碎片

来源:互联网 发布:怎样让电脑用手机网络 编辑:程序博客网 时间:2024/05/22 14:14

这个看似一个很简单的概念,但有些细节可能会漏掉。
      直接用默认的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中。