diff --git a/posting/lists.go b/posting/lists.go
index 06404607e11862345ddc5c198c9b3d3bf2c62d9d..01307e5300b8bc495dcbe61a615b4cd28296d6ec 100644
--- a/posting/lists.go
+++ b/posting/lists.go
@@ -98,12 +98,12 @@ func aggressivelyEvict(ms runtime.MemStats) {
 		Info("Memory Usage after calling GC.")
 }
 
-func gentlyMerge(ms runtime.MemStats) {
+func gentlyMerge() {
 	ctr := NewCounters()
 	defer ctr.ticker.Stop()
 
-	// Pick 1% of the dirty map or 400 keys, whichever is higher.
-	pick := int(float64(dirtymap.Size()) * 0.1)
+	// Pick 5% of the dirty map or 400 keys, whichever is higher.
+	pick := int(float64(dirtymap.Size()) * 0.05)
 	if pick < 400 {
 		pick = 400
 	}
@@ -161,7 +161,8 @@ func checkMemoryUsage() {
 			aggressivelyEvict(ms)
 
 		} else {
-			gentlyMerge(ms)
+			// gentlyMerge can take a while to finish. So, run it in a goroutine.
+			go gentlyMerge()
 		}
 	}
 }