🔗 内存池
- 目标:减少内存碎片并提供详细的统计信息
- 状态:完成。
- 版本: 2.0
- 更多:
🔗 详细信息
MemPools 是一组运行在malloc()之上的池化内存分配器。其目的是减少内存碎片并提供有关内存消耗的详细统计信息。
最好所有Squid中的内存分配都应使用MemPools或在其之上构建的类型之一(即cbdata)来完成。
MemPools目前已半迁移到标准的C++,已从C函数转换为C++类的静态成员。这留下了一些遗留问题,例如初始化顺序。
此外,随着malloc实现的最新进展,可能需要将Squid与替代的malloc实现链接
🔗 公共API
有关公共API定义,请参阅https://squid.org.cn/Doc/code/namespaceMem.html和https://squid.org.cn/Doc/code/group__MemPoolsAPI.html。
🔗 MEMPROXY_CLASS 宏
此宏为使用它的类定义了池化的new和delete运算符。这是将C++类集成到Squid中进行动态分配的首选方式。其他API机制也是可能的,但它们是为特殊用例设计的。
为了方便阅读和代码维护,它应该放在类定义的private区域的顶部,在任何其他API详细信息之前,然后跟着一个空行,接着是‘public:’部分定义。
class Foo
{
MEMPROXY_CLASS(Foo);
public:
...
};
使用CBDATA_CLASS宏的类**不得**同时使用MEMPROXY_CLASS。这包括在类继承的直接线路中使用。
类别:功能
导航:站点搜索,站点页面,类别,🔼 向上