日期:2014-05-20  浏览次数:20774 次

JAVA内存溢出
  我们服务器用的是weblogic。主要功能有3个,FTP下载,解析XML,添加数据。解析XML和添加数据在一个方法里。解析完直接添加数据到数据库。现因为年初,客户工作量大。为了提高效率,便启用多线程。最开始流程是这样的。开启线程下载,如果下载完XML,就再开启线程进行解析。(没一个线程下载,只会解析一个XML)。
一般是所有的东西下载完后才会解析XML。但让我奇怪的是,在解析XML的过程中报内存溢出,每次的位置都不一样。我记得内存不是应该在方法执行完的时候就会释放吗?我记得有一次,在循环调用添加方法的时候,内出溢出。我不知道为什么会出这种错误。哪位大神有解?

------解决方案--------------------
使用什么方法解析的xml,如果是dom的话就会一次性把文件全部加载到内存中,有可能会导致内存溢出。采用事件解析xml可以避免此问题
------解决方案--------------------
用XML传送50m的数据...


利用流式的解析方式吧,读一点解析一点。

------解决方案--------------------
引用:
用的确实是demo4j,但XML不大,最大的也就是50M左右。如果是因为demo4j的话,那么解析后就会报错,会造成解析中断,但我的已经解析完了。。。


汗~你先试下dom4j解析20M的XML吧。。。