diff --git a/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala b/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala
index 24b544902b6349919444f6ff7b80047122ee04c4..be37cad4a0b50c9727d1b47438b9d238e7c21b1c 100644
--- a/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala
+++ b/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala
@@ -159,8 +159,8 @@ private[spark] class MemoryStore(
       assert(bytes.size == size)
       val entry = new SerializedMemoryEntry[T](bytes, memoryMode, implicitly[ClassTag[T]])
       entries.synchronized {
-        entries.put(blockId, entry)
         blockIdAndSizeSet += new OurBlockIdAndSizeType(blockId, entry.size)
+        entries.put(blockId, entry)
       }
       logInfo("Block %s stored as bytes in memory (estimated size %s, free %s)".format(
         blockId, Utils.bytesToString(size), Utils.bytesToString(maxMemory - blocksMemoryUsed)))
@@ -269,8 +269,8 @@ private[spark] class MemoryStore(
         }
 
         entries.synchronized {
-          entries.put(blockId, entry)
           blockIdAndSizeSet += new OurBlockIdAndSizeType(blockId, entry.size)
+          entries.put(blockId, entry)
         }
 
         logInfo("Block %s stored as values in memory (estimated size %s, free %s)".format(blockId,
@@ -397,8 +397,8 @@ private[spark] class MemoryStore(
   def remove(blockId: BlockId): Boolean = memoryManager.synchronized {
     val entry = entries.synchronized {
       val origEntry = entries.get(blockId)
-      entries.remove(blockId)
       blockIdAndSizeSet -= new OurBlockIdAndSizeType(blockId, origEntry.size)
+      entries.remove(blockId)
     }
     if (entry != null) {
       entry match {
@@ -416,8 +416,8 @@ private[spark] class MemoryStore(
 
   def clear(): Unit = memoryManager.synchronized {
     entries.synchronized {
-      entries.clear()
       blockIdAndSizeSet.clear()
+      entries.clear()
     }
     onHeapUnrollMemoryMap.clear()
     offHeapUnrollMemoryMap.clear()