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(); } }