我想编写不会泄漏的应用程序,所以我正在寻找避免这种情况的最佳实践。
我总是关闭我的resultSets和Connections。但是,在完成对象处理后,我通常不会使它们无效,而将它们留给GC进行清理。
这是不好的做法吗?完成操作后,是否应该使ArrayList和Interators无效?
还有其他处理对象以保持内存完整的方法吗?
最佳答案
完成局部变量后,无需使它们无效:Java编译器足够聪明,可以找出何时丢弃该对象。
另一方面,需要对类成员变量进行不同的考虑:如果一个集合将对象保存在另一个对象中,则在完成处理后清除该集合可能是有意义的。仅当外部对象的生存期显着长于其集合内部对象的生存期时,这一点才重要。否则,垃圾收集器将在没有代码任何帮助的情况下处理对象的收集。