首页 > 解决方案 > HttpClient 类 AbstractConnPool 太大了,如何解决?

问题描述

该类org.apache.http.pool.AbstractConnPool有这个地图字段:</p>

private final Map<T, RouteSpecificPool<T, C, E>> routeToPool;

如果我使用很多代理ip,地图大小会越来越大,这会导致oom。

如何解决?

标签: javahttpclient

解决方案


老实说,我在使用 Apache HTP 客户端时从来没有遇到过这个问题。查看您在Httpclient out of memory的内存转储,我看到“ 104655 instances of class org.apache.http.pool.AbstractConnPool$1”这是一个匿名内部实现,RouteSpecificPool它是您提到的字段的值类型。

那么问题来了,你如何使用客户端呢?必须在某个时候释放连接,并且将清理未使用和/或过期的连接。

不要永远在池中保持连接或为不再使用的连接保持活动状态!这些事情与对高度多样化目标(又名路线)的请求相结合。您必须为使用配置超时(另请参阅Apache Httpclient Connection not Released)!


推荐阅读