ThreadSafeClientConnManager

ThreadSafeClientConnManager

我在Java应用程序中使用ThreadSafeClientConnManager进行多线程处理。我的ThreadSafeClientConnManager对象是静态的,因此它一直保留到应用程序运行为止。

如果我从不调用closeExpiredConnections()closeIdleConnections(),会发生什么?

从长远来看,它会使我的应用程序崩溃吗?

最佳答案

以下假设您使用httpcmponents-client 4.1.2(即当前的GA)。

从代码和javadocs来看,不会发生任何不好的情况。 ThreadSafeClientConnManager具有合理的限制。如果您没有向上更改限制,则最终池将填满并且旧连接将被踢出。

不利的一面是,您将保持闲置且已过期的连接,该连接保留了不需要的资源(文件句柄)和对象。但是同样,如果您没有更改默认值,则与可用资源相比,这些资源的数量很少:Linux系统上总共有1000个文件句柄,其中有20个文件句柄。

简而言之:这不会使应用程序崩溃。

PS这些库都有可用的源,您应该自己看看会带来什么后果。

09-27 00:51