MultiThreadedHttpConnectionManager 创建新线程失败

 

写的一个爬虫工具,多次因为抛出这样的异常而退出。

java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:597)
        at java.util.Timer.<init>(Timer.java:154)
        at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.<init>(MultiThreadedHttpConnectionManager.java:255)

  。。。。

 

后来终于明白,

每抓一次网页就新建一个MultiThreadedHttpConnectionManager对象,如此的低级错误,这个bug太严重了!!每回都三次握手。。。

实在不该啊!!!只需要新建一个MultiThreadedHttpConnectionManager对象就可以了。

 

 

 

        HttpState initialState = new HttpState();

        MultiThreadedHttpConnectionManager connectionManager;
        connectionManager = new MultiThreadedHttpConnectionManager();

        //handshake 3 times
        connectionManager.getParams().setMaxTotalConnections(1000);
        connectionManager.getParams().setConnectionTimeout(5 * 3 * 1000);
        connectionManager.getParams().setSoTimeout(15 * 1000);
        connectionManager.getParams().setSendBufferSize(16 * 1024);
        connectionManager.getParams().setReceiveBufferSize(1024 * 512);

        hc = new HttpClient(connectionManager);
        hc.setState(initialState);

        // set agent string
        hc.getParams().setParameter(HttpClientParams.USER_AGENT, ApiConst.AGENT_STRING);
        // use compatibility cookie mode because the world is a cruel place
        hc.getParams().setParameter(HttpClientParams.COOKIE_POLICY,
                "COMPATIBILITY");

        hc.getParams().makeLenient();
        // no need to process retry
        hc.getParams().setParameter(HttpClientParams.RETRY_HANDLER,
                null);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值