DEV Community

TildAlice
TildAlice

Posted on • Originally published at tildalice.io

gc.collect() Slows Python 32%: When Manual GC Hurts

The gc.collect() Trap

Calling gc.collect() manually feels responsible. You're cleaning up after yourself, preventing memory bloat, being a good citizen. Except when it makes your code 32% slower.

I ran into this debugging a data pipeline that processed 100K JSON records. Someone had sprinkled gc.collect() after every batch "to keep memory under control." The result? What should've taken 12 seconds was taking 16. The fix was deleting those helpful lines.

Python's garbage collector is tuned for typical workloads. When you override it, you're betting you know better than the heuristics CPython developers spent years optimizing. Sometimes you do. Most of the time, you don't.

A street scene in a residential area with garbage bins and parked cars along the sidewalk.

Photo by Charlie Griffiths on Pexels

How Python's GC Actually Works

Python uses reference counting as its primary memory management strategy. When an object's reference count hits zero, it's deallocated immediately. No waiting for a collection cycle.


Continue reading the full article on TildAlice

Top comments (0)