我浏览了一些旧书,发现了一本Peter Hagger的“实用Java”。在performance部分,建议在不再需要时将对象引用设置为null
。
在Java语言中,将对象引用设置为null
是否会提高性能或垃圾收集效率?如果是这样,在什么情况下这是一个问题?容器类?对象组合?匿名内部类?
我经常在代码中看到这一点。这是过时的编程建议,还是仍然有用?
发布于 2009-05-12 02:26:19
不,这不是过时的建议。悬空引用仍然是一个问题,特别是如果您正在使用预分配的数组实现可扩展数组容器(ArrayList
或类似的)。超出列表“逻辑”大小的元素应该清空,否则它们将不会被释放。
参见Effective Java第二版,第6项:消除过时的对象引用。
发布于 2009-05-12 02:31:36
在内存受限的环境中(例如手机),这可能会很有用。通过设置null,objetc无需等待变量超出作用域即可进行gc。
然而,对于日常编程来说,这不应该是规则,除非在像Chris Jester-Young引用的特殊情况下。
发布于 2018-01-11 17:01:03
这样做的原因之一是消除过时的对象引用。您可以阅读文本here.
https://stackoverflow.com/questions/850878
复制相似问题