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.
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)