如果不关闭Apache HttpClient connectionManager会发生什么?

时间:2017-03-26 05:00:48

标签: java apache http

使用apache HttpClients Connection Manager发送http请求之后,通过接收result来解决此问题。返回结果很少发生。

private static final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connectionManager).setDefaultRequestConfig(configForRequest).build();
httpClient.execute...

在这种情况下套接字会发生什么情况,是否有必要在收到请求后每次都关闭Connect Manager?或者是否有适当的时间来检查和关闭它?

1 个答案:

答案 0 :(得分:0)

通常建议每个通信组件或每个应用程序都有一个HttpClient实例。但是,如果应用程序很少使用HttpClient,并且不保证在内存中保留HttpClient的空闲实例,则强烈建议在部署HttpClient实例之前显式关闭多线程连接管理器。这将确保正确关闭连接池中的所有HTTP连接。

因此,如果您的应用程序遵循此标准,那么您只需在启动应用程序时初始化HttpClient和ConnectionManager,并在停止时将其关闭。

每次调用方法时创建这样的资源不仅会降低应用程序的效率,而且还容易出现内存泄漏。