fix memory growth issues due to unnecessary set_heaps_increment

free_num refers to the number of slots that were found to be free
during the last sweep cycle. these are no longer free (they were
re-used). using the real number of free slots causes this conditional
to fire way more often.
backport allocated/freed counters
Merge branch 'gc-stats' into github-p231