dom4j sax 解析超大xml(2.3G)文件内存溢出问题

fuzeqiang 2014-08-04 04:51:51
情况是这样的:我使用dom4j解析一个2.3G的xml文件,代码如下:

Document doc = null;
SAXReader reader = new SAXReader();
try {
doc = reader.read(new FileReader(new File(fileName)));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
System.out.println(doc);
Element root = doc.getRootElement();
System.out.println(root.getName());

jvm启动参数:-Xms256M -Xmx1400M
jvm内存应该是够的,我监控过内存,在解析过程中jvm的1400M的内存一直都没用完。
报错如下:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.<init>(String.java:215)
at org.dom4j.io.SAXContentHandler.characters(SAXContentHandler.java:299)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:538)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:464)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:365)
at dom4j.sax.bigdata.SaxBigDataTest.main(SaxBigDataTest.java:20)
求高人指点!!
...全文
1266 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rumlee 2014-08-05
  • 打赏
  • 举报
回复
3楼4楼都已经说过了,这么大当然不能用dom了。
独行码夫 2014-08-04
  • 打赏
  • 举报
回复
dom4j 解析xml文件是一次性load内存的,这样不溢出才怪,sax是流解析,用sax试试!
S117 2014-08-04
  • 打赏
  • 举报
回复
这么大就不能用dom4j,用sax试试吧
fuzeqiang 2014-08-04
  • 打赏
  • 举报
回复
更正一下,1400m内存被用光了。然后就溢出了。sax解析如此消耗内存吗?
引用 1 楼 rui888 的回复:
2.3 G这么大文件。你怎么解析啊。不知得你为什么搞这么大个文件解析。
用户数据有这么大我也没办法
tony4geek 2014-08-04
  • 打赏
  • 举报
回复
2.3 G这么大文件。你怎么解析啊。不知得你为什么搞这么大个文件解析。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧