@Override
protected boolean removeEldestEntry( Map.Entry<Key, Value> eldest )
{
boolean doRemove = size() > capacity;
if( doRemove )
{
callback.evict( eldest );
if( flushes % getCapacity() == 0 )
{
Runtime runtime = Runtime.getRuntime();
long freeMem = runtime.freeMemory() / 1024 / 1024;
long maxMem = runtime.maxMemory() / 1024 / 1024;
long totalMem = runtime.totalMemory() / 1024 / 1024;
LOG.info( "flushed keys num times: {}, with capacity: {}", flushes + 1, capacity );
LOG.info( "mem on flush (mb), free: " + freeMem + ", total: " + totalMem + ", max: " + maxMem );
float percent = (float) totalMem / (float) maxMem;
if( percent < 0.80F )
LOG.info( "total mem is {}% of max mem, to better utilize unused memory consider increasing the cache size", (int) ( percent * 100.0F ) );
}
flushes++;
}
return doRemove;
}
};