我使用 commons-httpclient 将查询发送到 Web 服务器。Web 服务器从不关闭连接,但存在与连接上下文相关的小内存泄漏。

因此,我想时不时地关闭持久连接(例如,每个 X 查询),但我没有找到任何方法来做到这一点。我使用 MultiThreadedHTTPConnectionManager

我可以使用 MultiThreadedHTTPConnectionManager.closeIdleConnections(very_small_delay),但这不是很可靠:如果我的 Java 代码有很多工作要做,那么可能没有连接是空闲的,因为总是有其他线程在等待空闲连接。

谢谢,

有帮助吗?

解决方案

执行一个方法之后,让我们说GET,你可以阅读responsed的HTTPStatus数量,来决定是否method.releaseConnection()需要被调用。

或者,如果你知道哪些方面你想接近,你可以尝试

MultiThreadedHTTPConnectionManager
void    releaseConnection(HttpConnection conn) 

好吧,我还以为你有一些原因,你想“杀”的连接。假设你有要关闭在手连接时,HttpConnection的对象。愿此方法的帮助?

HttpConnection
public void close()

    Closes the socket and streams. 

其他提示

你能负担得起使用吗 SimpleHttpConnectionManager(boolean alwaysClose)?

httpClient.setHttpConnectionManager(new SimpleHttpConnectionManager(true))

当我使用时 releaseConnections() 仍然存在联系 CLOSE_WAIT 状态。如果我添加可以吗 closeIdleConnections(0)releaseConnections?

这是否意味着即使连接被发送回池以供其他客户端使用但未关闭/释放 closeIdleConnections 会关闭它吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top