CLR垃圾收集方法是否意味着抛出循环对象引用是安全的?

我有一个理论认为CLR垃圾收集机制意味着我可以在对象层次结构中使用循环引用,而不会为拆卸和垃圾收集创建死锁。 这是一个安全的假设吗? (目标语言VB.NET)

.NET垃圾收集器是世代标记和扫描收集器。 它不使用引用计数。 所以是的,有循环引用是安全的。 语言无关紧要

根据这篇文章: https : //web.archive.org/web/1/http : //articles.techrepublic%2ecom%2ecom/5100-10878_11-5109829.html

循环引用是当有两个对象相互引用时发生的问题。 假设您有A类引用B类。如果B类也引用A类,那么我们有一个循环引用。 这在许多情况下都会发生。 一个典型的例子是对象之间的父子关系,其中子对象与父对象交互并且还保存对父对象的引用。 这可能会导致在应用程序关闭之前无法清理的对象。 .NET的垃圾收集方式解决了循环引用的问题,因为垃圾收集器能够清除从根可以访问的任何对象。

编辑:
从这篇文章判断: http : //blogs.msdn.com/abhinaba/archive/2009/01/27/back-to-basics-reference-counting-garbage-collection.aspx似乎.Net的垃圾收集不是基于关于垃圾收集的引用计数。

另一篇值得一读的文章(详细解释垃圾收集)是这样的: http : //www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/