我注意到了 >M_MXFAST 这个条件,这个条件的介绍为:
1. M_MXFAST
M_MXFAST用于设置fast bins中保存的chunk的最大大小,默认值为64B,fast bins中保存的chunk在一段时间内不会被合并,分配小对象时可以首先查找fast bins,如果fast bins找到了所需大小的chunk,就直接返回该chunk,大大提高小对象的分配速度,但这个值设置得过大,会导致大量内存碎片,并且会导致ptmalloc缓存了大量空闲内存,去不能归还给操作系统,导致内存暴增。
M_MXFAST的最大值为80B,不能设置比80B更大的值,因为设置为更大的值并不能提高分配的速度。Fast bins是为需要分配许多小对象的程序设计的,比如需要分配许多小struct,小对象,小的string等等。
如果设置该选项为0,就会不使用fast bins。
再看看我们的list,明白了 一个int远远不够 ,所以就是我们这个list很大,存放更多的元素,glibc也会不会释放的。这也就是好多程序使用list ,内存暴增的问题。清楚了。下来就是解决方案了。后面再补充。