python进程内存撑大了下不去,只能手动重启释放内存,这么坑爹的事情你遇到过吗?哪家内存分配器强?结果一目了然。
线上进程目前都是使用原生的Python内存分配器(pymalloc),在正常的情况下表现还算稳定,但如果来了一波类似于武神坛或者天下第一的比武大会,为手机瞬间带来了10倍于平时的流量,一阵狂虐之后,Python进程占用的内存被撑大就下不去了。关于Python的内存不释放问题,可以参考一下这两篇文章:python内存不释放原理,Python memory management and TCMalloc。
为了解决内存泄漏的问题,我专门使用了三种编译方式去编译Python2.7解释器
以下分别使用pymalloc、without-pymalloc、tcmalloc测试1千万个object的list内存释放情况(注:默认使用Python2.7)。
- 测试环境
CPU | 4 QEMU Virtual CPU version 2.1.0 |
---|---|
内存 | 15G |
操作系统内核 | Linux onlinegame-229-88 3.2.0-4-amd |