java - HttpClient 类 AbstractConnPool 太大了,如何解决?
问题描述
该类org.apache.http.pool.AbstractConnPool
有这个地图字段:</p>
private final Map<T, RouteSpecificPool<T, C, E>> routeToPool;
如果我使用很多代理ip,地图大小会越来越大,这会导致oom。
如何解决?
解决方案
老实说,我在使用 Apache HTP 客户端时从来没有遇到过这个问题。查看您在Httpclient out of memory的内存转储,我看到“ 104655 instances of class org.apache.http.pool.AbstractConnPool$1
”这是一个匿名内部实现,RouteSpecificPool
它是您提到的字段的值类型。
那么问题来了,你如何使用客户端呢?必须在某个时候释放连接,并且将清理未使用和/或过期的连接。
不要永远在池中保持连接或为不再使用的连接保持活动状态!这些事情与对高度多样化目标(又名路线)的请求相结合。您必须为使用配置超时(另请参阅Apache Httpclient Connection not Released)!
推荐阅读
- reactjs - Axios Cache-Control: max-age=0 仍然使站点存储缓存
- postgresql - 在 Postgresql 中多次合并到同一个表的最佳方法是什么?
- android - 没有缓存版本的 gradle - 不禁用离线模式
- c++ - C++ 使用 QuickSort 对数组结构进行排序
- php - PHP - 数组映射或过滤
- jquery - jquery modal dialog button div没有右对齐-css使其占据总行
- javascript - VSCode - 如何在 JSDoc 中键入提示 node_modules 类型?
- java - 删除 if 语句和花括号,但保留内容
- python - 熊猫将满足大于和小于条件的列的值倍数
- jenkins-pipeline - 如何使 Jenkins 构建通过或不稳定取决于 Serenity 报告