【发布时间】:2026-02-10 10:45:01
【问题描述】:
我目前正在编写一个使用 TCP 套接字与服务器通信的程序。其中一部分需要通过多种方法来回发送信息。但是,我不想为每个请求打开一个新的套接字连接,但我不能保证请求的数量或顺序。为了处理这个问题,我只保留了一个可以重复使用的套接字实例。
但是,为了读取数据,我使用BufferedReader 包装类。因为我复用了同一个socket,所以不能在reader上调用close(),不然我也要关闭socket流。
如果我不想关闭底层流,是否需要在 BufferedReader 上调用 close()?不这样做会导致内存泄漏吗?如果确实需要调用close(),如何在不关闭套接字流的情况下返回内存?
注意:我将在程序终止时关闭底层流,这个问题与此无关。
【问题讨论】:
-
为什么要为每个请求打开一个新的套接字连接?
-
'Open up a new socket connection per request'和'reuse the same socket'是相互矛盾的。它是哪一个?下定决心。这些与关闭缓冲阅读器有什么关系?
-
糟糕!那里的主要错字。我不想为每个请求打开一个新的套接字。已编辑。
标签: java sockets memory-leaks stream