解析大型xml文件时Java堆空间错误
我想解析一个大型xml文件(785mb)并将数据写入csv。当我尝试解析文件时,出现java heapspace错误(内存不足)。 我试着将堆大小增加到1024mb,但代码可以处理最大50mb的文件。解析大型xml文件时Java堆空间错误
请让我知道一个在java中解析大型XML文件的解决方案。
您应该使用SAXParser而不是DOMParser 区别在于它不会将完整的XML数据加载到内存中。
看看这个教程:http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/
问候,
罗曼。
我无法使用SAX解析器,因为xml文件中的标记未知。所以我将无法为SAX解析器创建错误处理程序。 – 2014-10-16 14:18:03
好的,所以StAX解析器可能是更好的选择,因为它使用了迭代器方法。 – Romain 2014-10-16 14:26:10
我从文件中解析数据时学到的一件事就是不缓存它。确保您没有将整个文件拖入对象中。 – generalcrispy 2014-10-16 14:08:23
你使用SAX或DOM解析器吗? – Icewind 2014-10-16 14:09:49
如果你使用32位Java,你将不会超过cca 1.5GB的堆空间 – Miki 2014-10-16 14:09:58