【发布时间】:2011-11-01 15:21:19
【问题描述】:
我目前正在尝试使用 JAXB 解组 XML 文件,但似乎 XML 文件太大(~500mb)而无法处理。我不断收到java.lang.OutOfMemoryError: Java heap space@
Unmarshaller um = JAXBContext.newInstance("com.sample.xml");
Export e = (Export)um.unmarhsal(new File("SAMPLE.XML"));
我猜这是因为它试图将大型 XML 文件作为对象打开,但该文件对于 java 堆空间来说太大了。
还有其他更“节省内存”的方法来解析大约 500mb 的大型 XML 文件吗?或者也许是一个可以帮助我处理大型 XML 文件的解组器属性?
这是我的 XML 的样子
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- -->
<Export xmlns="wwww.foo.com" xmlns:xsi="www.foo1.com" xsi:schemaLocation="www.foo2.com/.xsd">
<!--- --->
<Origin ID="foooo" />
<!---- ---->
<WorkSets>
<WorkSet>
<Work>
.....
<Work>
....
<Work>
.....
</WorkSet>
<WorkSet>
....
</WorkSet>
</WorkSets>
我想在 WorkSet 级别解组,仍然能够阅读每个 WorkSet 的所有工作。
【问题讨论】: