当前位置:  开发笔记 > 编程语言 > 正文

在Linux平台上使用套接字时是否存在文件描述符泄漏?

如何解决《在Linux平台上使用套接字时是否存在文件描述符泄漏?》经验,为你挑选了1个好方法。

如果我通过调用例如打开和关闭套接字

Socket s = new Socket( ... );
s.setReuseAddress(true);
in = s.getInputStream();
...
in.close(); 
s.close();      

Linux声明此套接字仍处于打开状态,或者至少是连接的文件描述符.当lsof查询此进程的打开文件时,有一个关闭连接的条目:

COMMAND  PID   USER   FD   TYPE DEVICE     SIZE   NODE NAME
java    9268 user    5u  sock    0,4           93417 can't identify protocol

此条目将一直保留到程序关闭之前.有没有其他方法可以最终关闭套接字?我有点担心我的java应用程序可能会阻塞许多文件描述符.这可能吗?或者,即使重新设置了ReuseAdress,java还是会保留这些套接字来重用它们吗?



1> Richard Camp..:

如果这些套接字都处于TIME_WAIT状态,这是正常的,至少会持续一段时间.用netstat检查一下; 套接字通常会挂起几分钟,以确保在重新使用新套接字的端口之前成功丢弃来自套接字的分散数据.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有