public synchronized void clean() { final Iterator<Map.Entry<K, WeakReferenceListManager<V>>> iterator = mData.entrySet().iterator(); while (iterator.hasNext()) { final Map.Entry<K, WeakReferenceListManager<V>> entry = iterator.next(); final WeakReferenceListManager<V> list = entry.getValue(); list.clean(); if (list.isEmpty()) { iterator.remove(); } } }