我對編程相當陌生,並且正在爲我的論文撰寫一個web爬行器。我已經提供了一個網絡爬蟲,但我發現它太慢,因爲它是單線程的。花了30分鐘時間來抓取1000個網頁。我試圖創建多個線程來執行,並使用20個線程同時運行1000個網頁僅需2分鐘。但是現在我遇到了「堆內存不足」錯誤。我敢肯定我做了什麼是錯誤的,它爲20個線程創建了for循環。多線程Java爬蟲而不發佈錯誤的正確方法是什麼?說到這些,是否將解決方案多線程化或不是?如何在Java Web Crawler中爲多線程處理OUT OF MEMORY錯誤
1
A
回答
2
簡單的答案(見上)是增加JVM內存大小。這將幫助,但很可能的是,真正的問題是,你的網頁檢索算法是創造增長成正比您訪問的網頁數量在內存中的數據結構。如果是這種情況,解決方案可能會將該數據結構中的數據移動到光盤;例如一個數據庫。
最合適的解決問題的方法取決於你如何網絡爬蟲的作品,它是什麼收藏,多少頁,你需要抓取。
3
我的第一個建議是,你增加堆大小的JVM:
0
關於你的程序的速度:
如果你的網絡爬蟲服從於服務器上的robots.txt文件(它應該避免被網站管理員禁止),那麼可能沒有什麼可以完成的。
你就應該剖析你的計劃,但我預計大部分的時間你的履帶式下載HTML頁面,如果你下載這麼快你耗盡他們的帶寬網站管理員通常不會幸福。
總之,下載整個網站而不傷害該網站將需要一段時間。
相關問題
- 1. Java如何處理多線程中的錯誤?
- 2. 線程,多處理錯誤
- 3. Out of內存錯誤android
- 4. 如何將特定線程快速處理爲多線程java?
- 5. 「Out of Band」爲asp.net應用程序提供處理技術
- 6. Java如何處理多線程?
- 7. java如何處理多線程?比進程更多的線程
- 8. 多線程Spring批處理錯誤
- 9. 如何處理java線程
- 10. 錯誤:在處理序言對列表時出現「Out of global stack」
- 11. 在非UI線程中處理錯誤
- 12. java-如何處理多線程的web應用程序中的錯誤日誌記錄
- 13. gcc檢測「subindex out of bound」錯誤
- 14. 錯誤'Out of memory'是什麼原因?
- 15. MathProg out of domain
- 16. 如何在線程中處理線程?
- 17. Out of index exception
- 18. java中的多線程處理
- 19. Java隊列中的多線程處理
- 20. 如何在Java中調用REST端點的並行處理/多線程處理
- 21. 爲什麼Matlab不使用Swap,但錯誤「Out of memory」?
- 22. Java錯誤處理程序
- 23. Java處理程序錯誤
- 24. 錯誤處理Java程序
- 25. .persist()行有時會導致Java Out of Heap Space錯誤
- 26. 在PHP中處理Web服務錯誤
- 27. Vb.net中的多線程和錯誤處理
- 28. Java多線程錯誤`java.lang.IllegalMonitorStateException`
- 29. 如何多線程隊列處理
- 30. Java線程處理
嗨daveb。它確實遵守robots.txt文件,以及多線程沒有一種解決速度問題,現在我只是想找出最有效的方式,以一個多線程的程序,這可能避免錯誤。必須有一個,否則線程的全部要點是什麼。 – Tobias 2009-07-18 01:05:06