C# 树节点移除和内存管理
C# Tree Node Removal and Memory Management
我正在开发具有树结构的 C# 应用程序。该结构由 Component
个对象的列表组成,每个 Component
可以有一个子组件列表。我的问题是,如果我删除树(或子树)的根,垃圾收集器是否知道删除所有子组件和子子组件?
如果没有提及任何通过任何有根对象标注的那些,则它们有资格收集。
换句话说,如果有可能执行任何试图引用该对象的代码,那么它就不能被收集;如果程序可以确定将来执行的任何代码都不可能尝试访问该对象,那么它们就有资格被收集。
这些对象被其他不可访问的对象引用是不相关的。
我正在开发具有树结构的 C# 应用程序。该结构由 Component
个对象的列表组成,每个 Component
可以有一个子组件列表。我的问题是,如果我删除树(或子树)的根,垃圾收集器是否知道删除所有子组件和子子组件?
如果没有提及任何通过任何有根对象标注的那些,则它们有资格收集。
换句话说,如果有可能执行任何试图引用该对象的代码,那么它就不能被收集;如果程序可以确定将来执行的任何代码都不可能尝试访问该对象,那么它们就有资格被收集。
这些对象被其他不可访问的对象引用是不相关的。