为垃圾收集清除 BST 的最佳方法是什么?
What is the best way to clear a BST for garbage collection?
我想清除 BST 以利用垃圾收集器。那么,要清除 BST,将根设置为 null 是否就足够了,这样我最终会得到一堆没有指向它们的指针的废弃节点?还是将每个节点设置为空更好?
- 这两种方法是否等价?
- 其中之一会导致内存泄漏吗?
- 一个垃圾回收速度会比另一个快吗?
我也在关注弱引用和强引用等问题
任何活动线程无法访问的任何对象都可以进行垃圾回收。
基于此:
- 是的。
- 没有
- 取决于GC的实施。反正作为一个Java程序员,你是管不了的。您所能做的就是相信它会很好地完成工作。此外,将 root 设置为空是 O(1),而将所有引用置空是 O(n),其中 n 是节点数。
结论:
只要把root设置为null,让GC帮他在合适的时候遍历树:)
我想清除 BST 以利用垃圾收集器。那么,要清除 BST,将根设置为 null 是否就足够了,这样我最终会得到一堆没有指向它们的指针的废弃节点?还是将每个节点设置为空更好?
- 这两种方法是否等价?
- 其中之一会导致内存泄漏吗?
- 一个垃圾回收速度会比另一个快吗?
我也在关注弱引用和强引用等问题
任何活动线程无法访问的任何对象都可以进行垃圾回收。
基于此:
- 是的。
- 没有
- 取决于GC的实施。反正作为一个Java程序员,你是管不了的。您所能做的就是相信它会很好地完成工作。此外,将 root 设置为空是 O(1),而将所有引用置空是 O(n),其中 n 是节点数。
结论:
只要把root设置为null,让GC帮他在合适的时候遍历树:)