显示内存管理
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 前一篇日志提到的方法?