Skip to main content
 首页 » 编程设计

java之如何处理 Java Web 爬虫中多线程的内存不足错误

2023年09月11日135www_RR

我是编程新手,正在撰写有关网络爬虫的论文。我是由一个网络爬虫提供的,但我发现它太慢了,因为它是单线程的。爬取 1000 个网页需要 30 分钟。我尝试创建多个线程来执行,20 个线程同时运行 1000 个网页只用了 2 分钟。但是现在我遇到了“堆内存不足”错误。我确定我做错了,为 20 个线程创建了一个 for 循环。在不给出错误的情况下多线程 java 爬虫的正确方法是什么?说到哪个,多线程是否可以解决我的问题?

请您参考如下方法:

简单的答案(见上文)是增加 JVM 内存大小。这会有所帮助,但真正的问题很可能是您的网络抓取算法正在创建一个内存中的数据结构,该结构的增长与您访问的页面数量成正比。如果是这种情况,解决方案可能是将该数据结构中的数据移动到磁盘;例如一个数据库。

最适合您问题的解决方案取决于您的网络爬虫的工作方式、它收集的内容以及您需要爬取的页面数量。