我有一个java.util.List对象,它保存连接的套接字以用于池化目的。在某些时候,我想刷新此列表。为此,我将列表大小设置为0.刷新前列表中的套接字对象会发生什么。在垃圾收集期间,jvm会正确关闭它们吗?或者我应该遍历清单并自己关闭每个清单?
答案 0 :(得分:2)
拥有操作系统资源的Cell
等对象通常会在收集到gaaraage时关闭这些资源(对于套接字,这是在AbstractPlainSocketImpl的终结器中完成的。)
但是由于垃圾收集运行时未定义,因此您应自行关闭此类对象以尽早释放这些资源。否则,您将面临耗尽操作系统资源的风险。
编辑:还阅读了Peter Lawrey的评论,他表达了比我能做的更好,为什么等待GC释放操作系统资源不是一个好主意。