final synchronized void drainLoggerRefQueueBounded() {
    for (int i = 0; i < MAX_ITERATIONS; i++) {
      if (loggerRefQueue == null) {
        // haven't finished loading LogManager yet
        break;
      }

      // this hack is needed to build this for release jdk6
      WeakReference<Logger> dummy = (WeakReference<Logger>) loggerRefQueue.poll();
      LoggerWeakRef ref = (LoggerWeakRef) dummy;
      if (ref == null) {
        break;
      }
      // a Logger object has been GC'ed so clean it up
      ref.dispose();
    }
  }