fix memusage blowup
switch back to internal freelist
use the same/similar heuristic to original gc
fixes