GC期间未引用的套接字对象

时间:2016-01-18 09:44:08

标签: java sockets collections garbage-collection

我有一个java.util.List对象,它保存连接的套接字以用于池化目的。在某些时候,我想刷新此列表。为此,我将列表大小设置为0.刷新前列表中的套接字对象会发生什么。在垃圾收集期间,jvm会正确关闭它们吗?或者我应该遍历清单并自己关闭每个清单?

1 个答案:

答案 0 :(得分:2)

拥有操作系统资源的Cell等对象通常会在收集到gaaraage时关闭这些资源(对于套接字,这是在AbstractPlainSocketImpl的终结器中完成的。)

但是由于垃圾收集运行时未定义,因此您应自行关闭此类对象以尽早释放这些资源。否则,您将面临耗尽操作系统资源的风险。

编辑:还阅读了Peter Lawrey的评论,他表达了比我能做的更好,为什么等待GC释放操作系统资源不是一个好主意。