首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理中多个线程的内存不足错误

如何处理中多个线程的内存不足错误
EN

Stack Overflow用户
提问于 2009-07-18 00:10:29
回答 3查看 1.9K关注 0票数 2

我对编程相当陌生,并且正在为我在网络爬虫上的论文而工作。我已经提供了一个网络爬虫,但我发现它太慢,因为它是单线程。花了30分钟才爬上1000个网页。我试图创建多个线程来执行,同时使用20个线程运行1000个网页只需2分钟。但现在我遇到了“内存堆出”的错误。我确信我所做的是错误的,即为20个线程创建了一个 for 循环。在不给出错误的情况下多线程java爬行器的正确方法是什么?说到这一点,多线程是否解决了我的问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-18 05:04:26

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

最合适的解决方案取决于你的网络爬虫是如何工作的,它正在收集什么,以及你需要爬行多少页。

票数 3
EN

Stack Overflow用户

发布于 2009-07-18 00:17:06

我的第一个建议是增加JVM的堆大小:

http://www.informix-zone.com/node/46

票数 3
EN

Stack Overflow用户

发布于 2009-07-18 00:29:04

关于您的程序的速度:

如果你的网络爬虫遵守服务器上的robots.txt文件(它应该避免被网站管理员禁止),那么就没有什么可以做的了。

你应该分析一下你的程序,但我想大部分时间都是你的爬虫下载html页面,如果你下载的速度太快,网站管理员通常都不会高兴,因为你会耗尽他们的带宽。

总之,下载一个完整的网站而不损害该网站将需要一段时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1146236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档