显示内存管理

2008-03-19 11:03:37


当满足一些条件时:
频繁操作内存,导致效率成为瓶颈
内存使用量会达到很大的级别时,分配可能会失败,甚至可能导致机器挂掉
可能必须对内存做显示管理,同意否?

1 专门提供内存服务的memcached,使用slabs管理内存,没有仔细查看一些分析文档.

2 我之前写过一个类似memcached的程序,使用boost::asio, lock free,速度虽然超快,但是最终这个项目失败告终.
  原因是没有对内存做管理,而是对缓存条目做了数量限制,估算有误导致内存过载.
  当然启动类似memcached的项目就是一个错误.

3 google-ctemplate代码写得非常经典,因为本身就是管理大量字符串,程序提供了内存管理工具Arena
class UnsafeArena : public BaseArena{
public:
 char* Alloc(const size_t size);
 void Free(void* memory, size_t size);
 char* Shrink(char* s, size_t newsize);
};

每个需要频繁操作内存的对象Dictionary都拥有Arena

4 stl的allocator控制
 basic_string<charT, traits, Alloc>整个程序提供特殊定义的string,使用自己的Alloc?

5 boost::pool?

6 前一篇日志提到的方法?