@Override public LRUClockNode getLRUEntry() { long numEvals = 0; LRUClockNode aNode = null; //search for entry to return from list for (;;) { aNode = getTailEntry(); //end of Lifo list stop searching if (aNode == null) { break; } numEvals++; synchronized (aNode) { //look for another entry if in transaction boolean inUseByTransaction = false; if (aNode instanceof AbstractRegionEntry) { if (((AbstractRegionEntry) aNode).isInUseByTransaction()) { inUseByTransaction=true; } } //if entry NOT used by transaction and NOT evicted return entry if (!inUseByTransaction && !aNode.testEvicted()) { break; } } } this.stats().incEvaluations(numEvals); return aNode; } }
_setLruList(new NewLIFOClockHand(owner, _getCCHelper(), internalRegionArgs));
_setLruList(new NewLIFOClockHand(owner, _getCCHelper(), internalRegionArgs));