code: protected void flush ()
      {
          if (!_canFlush) {
              return;
          }
  
          // If we've exceeded our size, remove things until we're back
          // under the required size.
          if (_size > _maxSize) {
              // This works because the entrySet iterator of a LinkedHashMap
              // returns the entries in LRU order
              Iterator<Map.Entry<K,V>> iter = _delegate.entrySet().iterator();
              // don't remove the last entry, even if it's too big, because
              // a cache with nothing in it sucks
              for (int ii = size(); (ii > 1) && (_size > _maxSize); ii--) {
                  Map.Entry<K,V> entry = iter.next();
                  entryRemoved(entry.getValue());
                  iter.remove();
              }
          }
      }
docs: Flushes entries from the cache until we're back under our desired
  cache size.