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