java如果我从未使用ThreadSafeClientConnManager调用closeExpiredConnections,会发生什么
我在java应用程序中使用ThreadSafeClientConnManager
进行多线程处理。我的ThreadSafeClientConnManager
对象是静态的,所以它会一直保留到应用程序运行为止
如果我从不打电话给closeExpiredConnections()
或closeIdleConnections()
,会发生什么
从长远来看,它会使我的应用程序崩溃吗
# 1 楼答案
以下假设您使用的是httpcmponents客户端4.1.2,它是当前的GA
从代码和javadocs来看,不会发生什么坏事。ThreadSafeClientConnManager有合理的限制。如果不向上更改限制,最终池将填满,旧连接将被踢出
一个不利的方面是,您保留了空闲和过期的连接,这些连接保留了不需要的资源(文件句柄)和对象。但同样,如果不更改默认值,这些资源的数量与可用资源相比是很小的:linux系统上总共1000个可用文件句柄中有20个
简而言之:这不会使应用程序崩溃
PS这些库有可用的源代码,你应该自己看看结果是什么