@Override public void onAddItem(K k, V v) { try { super.onAddItem(k, v); } finally { if (size() > limit) removeOldest(); } }
protected void onRemoveItem(Holder<K, V> h, boolean putToOutdated) { if (putToOutdated) putToOutdated(h); h.setRemoved(); onRemoveItem(h.k, h.v); }
@Override public void onAddItem(K k, V v) { if (v != null) updateSize(v, true); super.onAddItem(k, v); }
private void updateTimingCache(final Holder<K, V> key) { TimingsHolder<K, V> timingsHolder = key.getTimingsHolder(); if (timingsHolder == null || timingsHolder.ttl <= 0) return; long timing = timingsHolder.ttl + System.currentTimeMillis(); key.setValidUntil(timing); CacheCleaner.updateWakeUp(timing); timingsHolder.timings.add(new TimingEntry<Holder<K, V>>(key, timing)); }
@Override public void onRemoveItem(K k, V v) { try { super.onRemoveItem(k, v); } finally { if (size() > limit) removeOldest(); } }
private void updateSize(V v, boolean increment) { long add = increment ? checkAndGetSize(v) : -checkAndGetSize(v); if (statisticsWithHeapUsage.update(size.addAndGet(add)) > limit) removeOldest(); }
@Override public void onRemoveItem(K k, V v) { try { super.onRemoveItem(k, v); } finally { if (v != null) updateSize(v, false); } }
private void putToOutdated(Holder<K, V> h) { if (outdated != null) outdated.put(h.k, h.v); }
public Cache<K, V> allowOutdated(long ttlSec) { outdated = new Cache<K, V>(name + ".outdated", ttlSec); return this; }
@Override public MemoryLimitedCache<K, V> onRemove(CacheListener<? super K, ? super V> onRemove) { super.onRemove(onRemove); return this; }
@Override protected CacheStatistics createStatistics() { return new CacheStatisticsWithHeapUsage(this); }
private void updateTimingCache(final Holder<K, V> key) { TimingsHolder<K, V> timingsHolder = key.getTimingsHolder(); if (timingsHolder == null || timingsHolder.ttl <= 0) return; long timing = timingsHolder.ttl + System.currentTimeMillis(); key.setValidUntil(timing); CacheCleaner.updateWakeUp(timing); timingsHolder.timings.add(new TimingEntry<Holder<K, V>>(key, timing)); }
@Override public void onAddItem(K k, V v) { try { super.onAddItem(k, v); } finally { if (size() > limit) removeOldest(); } }
protected void onRemoveItem(Holder<K, V> h, boolean putToOutdated) { if (putToOutdated) putToOutdated(h); h.setRemoved(); onRemoveItem(h.k, h.v); }
@Override public void onRemoveItem(K k, V v) { try { super.onRemoveItem(k, v); } finally { if (size() > limit) removeOldest(); } }
@Override public void onAddItem(K k, V v) { try { super.onAddItem(k, v); } finally { if (v != null) updateSize(v, true); } }
@Override public void onRemoveItem(K k, V v) { if (v != null) updateSize(v, false); super.onRemoveItem(k, v); }
@Override public SizeLimitedCache<K, V> onRemove(CacheListener<? super K, ? super V> onRemove) { super.onRemove(onRemove); return this; }