一对削过的梨 | mpmetrics 中的内存管理

主要观点:介绍了mpmetrics中的内存管理,通过各种类和方法实现了基于共享内存的结构化数据存储及相关操作。
关键信息

  • 定义Int64类并实现其与共享内存的交互,包括属性代理和序列化/反序列化。
  • 通过Array类创建数组,遇到pickle问题后通过IntTypeObjectType来解决。
  • 引入ProductType以实现指定元素类型和长度的Array
  • 实现Heap类进行内存分配,包括跨页边界处理等。
  • 解决memoryview不能pickle的问题,使用DupFd实现Heap的pickle。
  • 引入BoxedInt64类实现带Heap的包装类型,可通过ObjectType动态创建。
    重要细节
  • pickle使用类的__qualname__来识别类,创建新类时会导致pickle问题,通过特定方式记录参数来解决。
  • Heap类采用“bump”风格分配内存,处理跨页边界和多页分配。
  • BoxedInt64类继承自Int64,通过ObjectType动态创建,可实现带Heap的对象的pickle。
  • 文中还提到了许多未详细介绍的内容,如其他类型、锁定等,可参考mpmetrics内部文档获取更多细节。
阅读 9
0 条评论