Hi, I hopefully managed to characterize the problem. I instrumented HEAD with the attached patch that exposes the current "min yield" of both freelists. Then, I ran the attached script that does the following: * at regular intervals, plot the total cell heap, alive cell heap (using your computation method), yield of the single-cell freelist, yield of the double-cell freelist; * every 1000 iteration, perform a large memory allocation (single cells), and then discard the allocated cells. The resulting file for around 5000 iterations is attached. It can be plotted with GNUplot using: plot ',,head.sporadic.gp' \ using 1:($2/$3) with lines title "total/alive", \ '' using 1:4 with lines axes x1y2 title "yield1", \ '' using 1:5 with lines axes x1y2 title "yield2" This shows the oscillation of the total to alive cell heap ratio, as well as the variations of the "min yield" of the freelists (x axis represents the iteration number):