private void cullCacheTimes() {
        final long oldestCullToKeep = System.currentTimeMillis() - MAX_CULL_COUNT_PERIOD;
        final Set<Long> oldCulls = cullTimes.stream()
            .filter(cullTime -> cullTime < oldestCullToKeep)
            .collect(Collectors.toSet());
        cullTimes.removeAll(oldCulls);
    }
Removes objects from cache if the cache is too full. "Too full" is
defined as within 3% of the maximum cache size. Whenever the cache is
is too big, the least frequently used elements are deleted until the
cache is at least 10% empty.
xmppserver/src/main/java/org/jivesoftware/util/cache/DefaultCache.java