我希望清空一棵二叉搜索树以利用垃圾回收。那么,要清空一棵二叉搜索树,将根节点设置为null就足够了吗?这样会留下一堆没有指针的废弃节点吗?还是最好把每个节点都设置为null呢?
- 这两种方法等效吗?
- 它们中的哪一个会导致内存泄漏?
- 其中一个比另一个更快地进行垃圾回收吗?
我也关注弱引用和强引用等问题。
我希望清空一棵二叉搜索树以利用垃圾回收。那么,要清空一棵二叉搜索树,将根节点设置为null就足够了吗?这样会留下一堆没有指针的废弃节点吗?还是最好把每个节点都设置为null呢?
我也关注弱引用和强引用等问题。
bst = null
就可以了,如果bst
变量超出作用域,则不需要这样做。 - user2357112root = null
,具体取决于你的BST的结构。通常最好用一个新的BST来替换它;例如,如果你在循环体的开头有BST bst = new BST();
,那么你每次迭代都会使用一个全新的BST,旧的BST只要不再需要就会被GC回收。 - user2357112