摘要: 先感謝同事renial的<解析xml時遇到的一些問題>技術(shù)分享,下面是一些記錄和實際操作
1.使用Dom4j解析大文件時內(nèi)存溢出的問題
問題是這樣的,當我用dom4j去解析一個幾十M的xml時,就出現(xiàn)out of memory.當然了,這也是根據(jù)你的機器性能而定的,我們都知道dom4j在各種DOM解析器中應該算是性能最好的,連大名鼎鼎的Hibernate都是用dom4j來解析XML配置文件的
問題出在于使用dom4j的SAXReader是會把整個XML文件一次性讀入,如果XML文件過大就會拋出out of memory,但即使是使用SAXParser批量讀入解析,但它也是一次解析完,假設XML文件有幾萬條數(shù)據(jù),那么解析后就必須在內(nèi)存放入這幾萬條對象.
常用的Dom4j文件解析方式:
InputStream is = new FileInputStream(filePath);
SAXReader reader = new SAXReader(); //將整個XML構(gòu)建為一個Document
閱讀全文