我想编写不会泄漏的应用程序,因此我正在寻找避免这种情况的最佳实践。
我总是关闭我的结果集和连接。但是我通常不会在使用完对象后将它们无效,而是将它们留给 GC 进行清理。
这是不好的做法吗?当我完成它们时,我应该取消我的 ArrayLists 和 Interators 吗?
还有其他方法可以处理对象以保持内存完整吗?
我想编写不会泄漏的应用程序,因此我正在寻找避免这种情况的最佳实践。
我总是关闭我的结果集和连接。但是我通常不会在使用完对象后将它们无效,而是将它们留给 GC 进行清理。
这是不好的做法吗?当我完成它们时,我应该取消我的 ArrayLists 和 Interators 吗?
还有其他方法可以处理对象以保持内存完整吗?
使用完局部变量后,您不需要将其置为无效:Java 编译器足够聪明,可以确定何时丢弃该对象。
另一方面,需要以不同的方式考虑类成员变量:如果一个集合将对象保存在另一个对象中,则在完成后清除该集合可能是有意义的。仅当外部对象的生命周期明显长于其集合内对象的生命周期时,这一点才重要。否则,垃圾收集器将在没有任何代码帮助的情况下处理收集对象。
我建议阅读 Effective Java Item 6 “Eliminate obsolete object references”。它讨论了问题的许多方面。但基本规则是清空对象引用应该是例外而不是规范。