in reply to forced garbage collection

Unless I'm badly mistaken, doing 'undef %hash;' will clear out the hash table, and deallocate it in one fatal swoop (/me does a lot of guessing and waves his hands around a bunch), probably via a call to Perl_hv_undef somewhere. But I do know that perl has trouble deallocating circular data structures properly unless you explicitly break the circle.

cephas