In the GarbageCollector class garbage collection is executed when
get_option( self::$code, 0 ) <= time() - $this->offset
However self::$code is always updated resulting in the GarbageCollector never actually doing the necessary cleanup.
update_option( self::$code, time() );