Mimalloc 香烟:因为捕捉一个内存泄漏而浪费了我一周的生命

主要观点:

  • 工作中的一个应用一直是内存受限的定价引擎,主要用于给酒店定价,涉及到如数据加载来源、部分加载等“元工作”。
  • 简化后的定价引擎代码结构,包含StateHotel结构体及相关函数。
  • 不同的内存分配器会导致代码有不同的内存特征,如mimalloc在特定情况下会先分配 4GB 内存,刷新时又额外分配 4GB 内存。
  • mimalloc假设每个线程都会不时地进行分配,导致在某些线程睡眠时内存管理出现问题,如线程分配大量数据后启动其他线程工作然后睡眠,内存块标记为待释放但无法被使用。
    关键信息:
  • 定价引擎的主要功能及相关工作。
  • 代码中的结构体和函数实现。
  • mimalloc的性能优势及导致的问题。
    重要细节:
  • 代码中load_hotels函数的实现细节。
  • 多线程相关的操作,如启动线程负责检查和刷新酒店数据。
  • mimalloc相关问题的链接,如[https://github.com/microsoft/...]、[https://github.com/microsoft/...]。
  • 解决问题的方法是在同一线程进行所有刷新操作。
阅读 61
0 条评论