private void evict ( Node candidate ) { if ( data . size ( ) > maximumSize ) { Node evict ; Node victim = head . next ; if ( admittor . admit ( candidate . key , victim . key ) ) { evict = victim ; } else if ( adapt ( candidate ) ) { evict = victim ; } else { evict = candidate ; feedback . put ( candidate . key ) ; } data . remove ( evict . key ) ; evict . remove ( ) ; policyStats . recordEviction ( ) ; } }
If the size exceeds the maximum then the candidate and victim are evaluated and one is evicted .