此问题如下:
在公司程序中,有可能web服务器的内存小了,出现java.lang.OutOfMemoryError
本人检查了程序,有以下几行认为会有不妥当,请大家给个建议:
方法:private void genExcelReport(Document doc, String reportName,
File templateDir, String templateName, String saveDir, String fileName)
throws Exception {....
XMLOutputter xmlOut = new XMLOutputter();
String xml = xmlOut.outputString(doc); --本人认为这个有点问题
reader = new StringReader(xml);
....}
这里的doc是一个很大的对象,大概有10的样子吧,所以这个xml对象应该也有
10 m左右,我想把它改成StringBuffer,或者StringBuilder有没有更好些,
如:
StringBuffer xml=xmlOut.outputString(doc);
reader = new StringReader(xml.toString);
------解决方法--------------------------------------------------------
用 StringBuilder 或者 StringBuffer 说不定在 8M 就内存溢出了!
10M 的对象全放在内存中很容易溢出的,具体要看你这是做什么的再进行优化。
------解决方法--------------------------------------------------------
这么大的 XML,不应用 DOM 进行解析,建议采用 SAX 进行解析。
------解决方法--------------------------------------------------------
------解决方法--------------------------------------------------------
------解决方法--------------------------------------------------------
xml 大了,就得压缩传输。压缩后就小了,10兆的xml压缩完估计能少很多。