1

我想编写不会泄漏的应用程序,因此我正在寻找避免这种情况的最佳实践。

我总是关闭我的结果集和连接。但是我通常不会在使用完对象后将它们无效,而是将它们留给 GC 进行清理。

这是不好的做法吗?当我完成它们时,我应该取消我的 ArrayLists 和 Interators 吗?

还有其他方法可以处理对象以保持内存完整吗?

4

2 回答 2

1

使用完局部变量后,您不需要将其置为无效:Java 编译器足够聪明,可以确定何时丢弃该对象。

另一方面,需要以不同的方式考虑类成员变量:如果一个集合将对象保存在另一个对象中,则在完成后清除该集合可能是有意义的。仅当外部对象的生命周期明显长于其集合内对象的生命周期时,这一点才重要。否则,垃圾收集器将在没有任何代码帮助的情况下处理收集对象。

于 2013-05-02T03:09:00.277 回答
0

我建议阅读 Effective Java Item 6 “Eliminate obsolete object references”。它讨论了问题的许多方面。但基本规则是清空对象引用应该是例外而不是规范。

于 2013-05-02T03:07:58.640 回答