gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:47:40 25 4
gpt4 key购买 nike

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

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 是否保留这些套接字以重新使用它们?

最佳答案

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

关于java - 在 linux 平台上使用套接字时是否存在文件描述符泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com