fixed to use semaphore and stopwatch and loop doing GC.  also with comment saying not guaranteed; let's watch out for failures...