使用apache HttpClients Connection Manager发送http请求之后,通过接收result来解决此问题。返回结果很少发生。
private static final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connectionManager).setDefaultRequestConfig(configForRequest).build();
httpClient.execute...
在这种情况下套接字会发生什么情况,是否有必要在收到请求后每次都关闭Connect Manager?或者是否有适当的时间来检查和关闭它?
答案 0 :(得分:0)
通常建议每个通信组件或每个应用程序都有一个HttpClient实例。但是,如果应用程序很少使用HttpClient,并且不保证在内存中保留HttpClient的空闲实例,则强烈建议在部署HttpClient实例之前显式关闭多线程连接管理器。这将确保正确关闭连接池中的所有HTTP连接。
因此,如果您的应用程序遵循此标准,那么您只需在启动应用程序时初始化HttpClient和ConnectionManager,并在停止时将其关闭。
每次调用方法时创建这样的资源不仅会降低应用程序的效率,而且还容易出现内存泄漏。