JAVA内存溢出

a2506560872 2013-03-01 03:05:55
我们服务器用的是weblogic。主要功能有3个,FTP下载,解析XML,添加数据。解析XML和添加数据在一个方法里。解析完直接添加数据到数据库。现因为年初,客户工作量大。为了提高效率,便启用多线程。最开始流程是这样的。开启线程下载,如果下载完XML,就再开启线程进行解析。(没一个线程下载,只会解析一个XML)。
一般是所有的东西下载完后才会解析XML。但让我奇怪的是,在解析XML的过程中报内存溢出,每次的位置都不一样。我记得内存不是应该在方法执行完的时候就会释放吗?我记得有一次,在循环调用添加方法的时候,内出溢出。我不知道为什么会出这种错误。哪位大神有解?
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a2506560872 2013-04-19
  • 打赏
  • 举报
回复
应该是开启线程太多,已解决
a2506560872 2013-03-01
  • 打赏
  • 举报
回复
引用 5 楼 AFer198215 的回复:
引用 2 楼 a2506560872 的回复:用的确实是demo4j,但XML不大,最大的也就是50M左右。如果是因为demo4j的话,那么解析后就会报错,会造成解析中断,但我的已经解析完了。。。 汗~你先试下dom4j解析20M的XML吧。。。
这个真没问题,没用线程之前,解析什么问题都没有。50多M的我也解析过
想喝咖啡的貓 2013-03-01
  • 打赏
  • 举报
回复
引用 2 楼 a2506560872 的回复:
用的确实是demo4j,但XML不大,最大的也就是50M左右。如果是因为demo4j的话,那么解析后就会报错,会造成解析中断,但我的已经解析完了。。。
汗~你先试下dom4j解析20M的XML吧。。。
Java_Super_Man 2013-03-01
  • 打赏
  • 举报
回复
用XML传送50m的数据... 利用流式的解析方式吧,读一点解析一点。
a2506560872 2013-03-01
  • 打赏
  • 举报
回复
引用 1 楼 lvzg_005 的回复:
使用什么方法解析的xml,如果是dom的话就会一次性把文件全部加载到内存中,有可能会导致内存溢出。采用事件解析xml可以避免此问题
用的是demo4j,不过XML最大50多M,而且weblogic加大了内存,如果是demo4j影响的话一开始就不应该在循环调用添加方法的时候报错吧?
a2506560872 2013-03-01
  • 打赏
  • 举报
回复
用的确实是demo4j,但XML不大,最大的也就是50M左右。如果是因为demo4j的话,那么解析后就会报错,会造成解析中断,但我的已经解析完了。。。
lvzg_005 2013-03-01
  • 打赏
  • 举报
回复
使用什么方法解析的xml,如果是dom的话就会一次性把文件全部加载到内存中,有可能会导致内存溢出。采用事件解析xml可以避免此问题

62,616

社区成员

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

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