diff --git a/lib/system/gc_ms.nim b/lib/system/gc_ms.nim index 96221b175b..13a56e8327 100644 --- a/lib/system/gc_ms.nim +++ b/lib/system/gc_ms.nim @@ -497,8 +497,9 @@ proc collectCTBody(gch: var GcHeap) = sysAssert(allocInv(gch.region), "collectCT: end") proc collectCT(gch: var GcHeap; size: int) = + let fmem = getFreeMem(gch.region) if (getOccupiedMem(gch.region) >= gch.cycleThreshold or - size > getFreeMem(gch.region)) and gch.recGcLock == 0: + size > fmem and fmem > InitialThreshold) and gch.recGcLock == 0: collectCTBody(gch) when not defined(useNimRtl):