/** * This method will check a required column can be loaded into memory or not. If required * this method will call for eviction of existing data from memory * * @param requiredSize * @return */ private boolean freeMemorySizeForAddingCache(long requiredSize) { boolean memoryAvailable = false; if (isSizeAvailableToLoadColumnDictionary(requiredSize)) { memoryAvailable = true; } else { // get the keys that can be removed from memory List<String> keysToBeRemoved = getKeysToBeRemoved(requiredSize); for (String cacheKey : keysToBeRemoved) { removeKey(cacheKey); } // after removing the keys check again if required size is available if (isSizeAvailableToLoadColumnDictionary(requiredSize)) { memoryAvailable = true; } } return memoryAvailable; }