public boolean reduceMemory(int reductionPolicy) {
        int numToDo = 0;
        synchronized (leastRectlyUsedLock) {
            int lruSize = leastRecentlyUsed.size();
            if (reductionPolicy == MemoryManagerDelegate.REDUCE_AGGRESSIVELY) {
                numToDo = lruSize * 75 / 100;
            } else if (reductionPolicy == MemoryManagerDelegate.REDUCE_SOMEWHAT) {
                if (lruSize > 5)
                    numToDo = lruSize * 50 / 100;
                else if (lruSize > 0)
                    numToDo = 1;
            }
//System.out.println("LazyObjectLoader.reduceMemory()  reductionPolicy: " + reductionPolicy + ",  numToDo: " + numToDo + ",  lruSize: " + lruSize);
            for (int i = 0; i < numToDo; i++) {
                ObjectStream objStm = leastRecentlyUsed.remove(0);
                if (objStm != null)
                    objStm.dispose(true);
            }
        }
        return numToDo > 0;
    }