From 8fcd87a6a588253a771d128310be6835f31a0031 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin <valyala@gmail.com> Date: Wed, 25 Nov 2020 21:19:43 +0200 Subject: [PATCH] lib/mergeset: help GC by removing refereces to slices in inmemoryBlock.Reset --- lib/mergeset/encoding.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/mergeset/encoding.go b/lib/mergeset/encoding.go index 3c9561e5e1..9a48a8c02a 100644 --- a/lib/mergeset/encoding.go +++ b/lib/mergeset/encoding.go @@ -31,6 +31,12 @@ type inmemoryBlock struct { func (ib *inmemoryBlock) Reset() { ib.commonPrefix = ib.commonPrefix[:0] ib.data = ib.data[:0] + + items := ib.items + for i := range items { + // Remove reference to by slice, so GC could free the byte slice. + items[i] = nil + } ib.items = ib.items[:0] }