我应该使用什么样的数据结构来处理大量数据

时间:2010-05-05 18:28:49

标签: java xml xhtml java-ee

我正在解析巨大的xhtml文件,我正在尝试使用其中的内容。基本上是它中的单词,它们的位置等我尝试使用HashMap,ArayList等。所有这些都在加载130347数据后给出OutOfMemory问题。什么是可用于在JAVA中保存大量数据的数据结构。

4 个答案:

答案 0 :(得分:2)

考虑使用SAX解析器,它的内存密集程度较低。

答案 1 :(得分:1)

您现在正在做什么,将所有数据吸收到一个巨大的结构中然后进行处理,无论您使用何种数据结构,都无法正常工作。尝试一种增量方法,在这种方法中,您可以读取一些数据,然后对其进行处理,然后再读取一些数据等。(实际上,您正在以这种方式执行的操作是创建自己的专用数据结构来处理块中的处理,所以我的第一个句子不是很准确。)

执行此操作的一种方法可能是使用SAX解析文档,SAX使用事件驱动的方法。您可以让内容处理程序通过读取xml元素来创建和存储您构造的对象,一旦累积就处理它们,然后清除集合。

答案 2 :(得分:1)

查看虚拟机内存设置。您可以通过命令行修改VM内存大小(如果您所在的位置),或者如果您位于某种服务器端环境中,则可以通过配置文件修改。

如果你正在使用tomcat / eclipse,这个帖子可以帮助你: Eclipse memory settings when getting "Java Heap Space" and "Out of Memory"

答案 3 :(得分:0)

你的问题很模糊。但是如果你的内存不足那么你应该使用磁盘数据库。 PostgreSQL,MySQL,HSQLDB等等。