我使用commons-httpclient向Web服务器发送查询。 Web服务器永远不会关闭连接,但是与连接上下文关联的内存泄漏很少。
因此,我希望不时关闭持久连接(例如,每个X查询),但我没有找到任何方法来执行此操作。我使用MultiThreadedHTTPConnectionManager
我可以使用MultiThreadedHTTPConnectionManager.closeIdleConnections(very_small_delay),但这不是很可靠:如果我的Java代码有很多工作要做,那么可能没有连接空闲,因为总有其他线程在等待空闲连接
谢谢,
答案 0 :(得分:2)
执行一个方法之后,让我们说GET,你可以读取响应的HttpStatus数,来决定是否需要调用method.releaseConnection()。
或者如果您知道要关闭哪个连接,可以尝试
MultiThreadedHTTPConnectionManager
void releaseConnection(HttpConnection conn)
好吧,我认为你有理由想要“杀死”一个连接。假设您有想要关闭的连接HttpConnection对象。愿这个方法有帮助吗?
HttpConnection
public void close()
Closes the socket and streams.
答案 1 :(得分:1)
你打电话给method.releaseConnection()
吗?
http://hc.apache.org/httpclient-3.x/threading.html#Connection_Release
答案 2 :(得分:0)
你能负担得起SimpleHttpConnectionManager(boolean alwaysClose)
吗?
httpClient.setHttpConnectionManager(new SimpleHttpConnectionManager(true))
答案 3 :(得分:0)
当我使用releaseConnections()
时仍然存在CLOSE_WAIT
状态的连接。我可以在closeIdleConnections(0)
之后添加releaseConnections
吗?
这是否意味着即使连接被发送回池以供其他客户端使用但未关闭/释放,那么closeIdleConnections
会关闭它吗?