首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用SAX解析器解析大小为800 MB的大型xml文件?

是否可以使用SAX解析器解析大小为800 MB的大型xml文件?
EN

Stack Overflow用户
提问于 2012-05-15 05:03:59
回答 4查看 2.5K关注 0票数 0

我正在解析transxchange数据,它有一些大小非常大的文件,几乎是800 MB。当我试图解析这些文件时,我会得到以下错误。

代码语言:javascript
复制
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
=======================================================================
    at java.util.ArrayList.<init>(Unknown Source)
    at java.util.ArrayList.<init>(Unknown Source)
    at JourneyPatternSections.<init>(JourneyPatternSections.java:21)
    at ReadBusData.startElement(ReadBusData.java:131)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at ReadBusData.parseDocument(ReadBusData.java:51)
    at ReadBusData.<init>(ReadBusData.java:41)
    at ReadBusData.main(ReadBusData.java:218).

我正在遵循教程。

有人能帮我吗。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-15 05:17:09

问:是否可以使用SAX解析大小为800 MB的大型xml文件?

是的,当然!

问题不是萨克斯。SAX实际上是处理大型文件的理想选择。

这个问题显然发生在你的列队名单上。

它有多大?

其他结构有多大?

您真的需要存储所有分配空间的数据吗?

您是否使用VM标志运行程序以分配更多内存?

你的电脑有多少内存?你能在支持更多内存的PC上运行它吗?64位个人电脑?

你在使用64位JVM吗?

建议:下载并试用Visual,以便在代码级别解决问题:

您可能会发现,您分配的数据比预期的要多得多。

IMHO..。

票数 2
EN

Stack Overflow用户

发布于 2012-05-15 05:14:48

增加您的堆大小,例如,使用-Xmx1g启动VM。

看这个博客。

票数 1
EN

Stack Overflow用户

发布于 2012-05-15 05:16:31

SAX将是解析大型文件的最佳机制。DOM解析将把整个文档加载到内存中,您将遇到问题。很有可能你有问题,因为你试图把所有的东西都存储在某种集合中。SAX很适合解析xml,处理它,然后继续前进。

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

https://stackoverflow.com/questions/10594398

复制
相关文章

相似问题

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