首页 > 代码库 > htmlunit 导致高cup占用的坑
htmlunit 导致高cup占用的坑
原文:http://blog.csdn.net/qq_28384353/article/details/52974432#reply
将爬虫部署到服务器上运行后,在查看服务器的状态监控时发现,天猫爬虫执行一段时间后,CPU占用异常升高,内存也跟着爆炸,虽然程序没有中断,但是爬取速度已经变成龟速。查看日志,发现抛出了Java.lang.OutOfMemoryError: Java heap space异常。
在服务器上通过jstack查到占用CPU最严重的五个线程里有四个竟然都是htmlunit下的webclient。
Google后找到原因,罪魁祸首是webclient创建后始终没有关闭,导致分配的内存始终无法被GC回收,最终引起outofmemory。
解决方法为在当前webclient使用结束后立即执行webclient.close(),或者设定在爬取一定次数后关闭webclient,虽然会对性能有一定影响,但是解决了内存泄漏的问题。
htmlunit 导致高cup占用的坑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。