最近借助jemalloc来解决内存碎片问题,但是遇到很多问题,做如下记录
优点:
jemalloc的确能对内存做一定优化,但是发现并不能解决所有内存碎片问题,只能说有一定缓解作用。
缺点:
使用jemalloc会带来内存增加问题,内存的消耗跟使用内存成正比,即申请内存越多,jemalloc消耗额外内存也越多。
经过查询资源,发现可以通过环境变量来进行一定的优化
export MALLOC_CONF=tcache:false,thp:never,retain:false
上述环境变量可以缓解内存异常增加问题。在此记录一个事故,有次我配置的是export MALLOC_CONF=tcache:false,retain:false,发现加载某些动态库会直接崩溃。
export MALLOC_CONF=dirty_decay_ms:0,muzzy_decay_ms:0
配置上述变量,本意是为了快速回收内存,减少内存占用,结果发现在频繁申请的内存的场景,cpu使用率会上涨20%左右,在cpu使用率比较高的场景中不建议配置