在C#和Python中都有GC,但是它们的实现完全不同。C#用的是传统的垃圾回收机制,主要是寻找能够从根集达到的对象,把这些对象标记为活的,然后清理其余对象;Python由于支持扩展模块(C/C++等),他的根集很难找全,因此Python使用引用计数机制来做垃圾回收。引用计数就存在循环引用的问题,参见How Python GC deal with reference-cycles?
参考资料:
Stack Overflow: Difference between background and concurrent garbage collection? (C#)