一个arraylist可以容纳多少串?

时间:2015-11-19 05:38:59

标签: java arraylist web-crawler stack-overflow

我正在尝试编写一个网络抓取工具。当我浏览大页面时,我的arraylist变量无法保存所有数据。它抛出异常。 线程“Thread-0”中的异常java.lang.StackOverflowError“。

持有这些网址的最佳方式是什么,因为我需要访问这些网址和儿童网址等等。

我想过保存到数据库或写入文件,但这些机制可能会降低爬虫的性能。

2 个答案:

答案 0 :(得分:3)

  

当我浏览大页面时,我的arraylist变量无法保存所有数据

这不正确。

Exception in thread "Thread-0" java.lang.StackOverflowError

StackOverflowException不是由于ArrayList容量耗尽造成的,这是2 ^ 31-1个条目。它是由过度递归引起的。

可能您没有跟踪您已访问过的网址,也没有遇到链接周期。

答案 1 :(得分:0)

理论上,ArrayList容量的限制为Integer.MAX_VALUE。但是,它取决于可用于JVM的内存量。如果有足够的堆空间来存储字符串,那么它将存储大量的字符串。