code: private void updateCRFValue() {
      long currentLogicTime = mLogicTimeCount.get();
      for (Entry<Long, Double> entry : mBlockIdToCRFValue.entrySet()) {
        long blockId = entry.getKey();
        double crfValue = entry.getValue();
        mBlockIdToCRFValue.put(blockId, crfValue
            * calculateAccessWeight(currentLogicTime - mBlockIdToLastUpdateTime.get(blockId)));
        mBlockIdToLastUpdateTime.put(blockId, currentLogicTime);
      }
    }
docs: This function is used to update CRF of all the blocks according to current logic time. When
  some block is accessed in some time, only CRF of that block itself will be updated to current
  time, other blocks who are not accessed recently will only be updated until
  {@link #freeSpaceWithView(long, BlockStoreLocation, BlockMetadataManagerView)} is called
  because blocks need to be sorted in the increasing order of CRF. When this function is called,
  {@link #mBlockIdToLastUpdateTime} and {@link #mBlockIdToCRFValue} need to be locked in case
  of the changing of values.