要么自己用Pool,要么用TCMalloc,其实也是thread_local实现的Pool
但是容器释放的内存,并不会立即还给OS
万一频繁调用,反复向系统申请和释放内存太影响效率
如果非要实现这个目标,用mmap/munmap自己管理内存
【 在 jackhu123 (cpp程序员) 的大作中提到: 】
: 其实你就差最后一步了,从发现内存耗尽这个问题,到主贴的几行代码,已经成功定位故障。
: 那几行代码的问题原因推测是: linux的glibc可能为减少频繁内存申请,进行了内存访问优化,导致在内存不足的设备上使用std::map,可能需要特殊处理("malloc_trim")
:
在linux下,malloc()/free()的实现是由glibc库负责的。STL的内存释放,有时候并没有直接返还给os,只是返还给了分配器。
: ...................
--
FROM 123.118.171.230