生成大数据量XMl时内存溢出问题

hulizerg 2008-01-29 12:14:49
近几天因为一个项目初次接触WEB SERVICE

与合作方有一个接口
对方在向我方的WEB服务器发送XML数据(非XML文件)
我方解析出XML的数据后,进行数据库后台处理
每次请求过来的XML中的数据量都比较大
大概有个10W条记录足有
我方在处理完成之后会在请求的XML的基础上添加相应的反馈信息
并将所有的反馈信息以XML格式的String返回


现在的问题是
解析XML和数据库后台都没问题
现在生成XML的时候
就会内存溢出

在网络上找了很的办法
大部分人都说更改JVM的内存设置
我在自己的机器(1.5G内存)上成功的设置将JVM内存的-Xmx512m
仍然会出现内存溢出的情况
更何况服务器目前分配给这个WEB服务器的内存只有512m
还有一部分人说用SAX
但是网络上的资料都是讲SAX解析XML,并没有SAX生成XML

想请问下这个问题该如何解决!
我使用JDOM解析并生成的
...全文
554 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-01-29
  • 打赏
  • 举报
回复
1 ,build 支持InputStream 的
2 返回String, 只代表你需要提供对方一个字符串的数据,使用OutputStream的print方法同样可以达到目的
没必要在内存生成一个XXXM的字符串对象哦!

3 对于数据提供者来说,数据也是以流的方式发过来的,使用
request.getInputStream()
可以获得,输出时,你作为数据提供者,当然也可以这样用了
response.getOutputStream()
hulizerg 2008-01-29
  • 打赏
  • 举报
回复
谢谢楼上的答复

我刚才在WEB版块也发了相同的帖子,见:
http://topic.csdn.net/u/20080129/11/9c48f552-f806-4367-9746-f56a34c58233.html
这一点我也想过
没有去具体的实施

为了这个问题
我做过比较多的实验
唯独是这个实验没有做
因为前面的实验全都失败了...
有点气馁的意思^_^!

不过现在还是要去试试的
老紫竹 2008-01-29
  • 打赏
  • 举报
回复
无论哪种原因,把所有数据全部读入到内存,然后再处理的方法都是不可取的。

采用流技术,从输入流读入数据,马上处理,输出到输出流,然后循环直道完成。

去查JDOM的文档吧,都支持Stream操作的。
hulizerg 2008-01-29
  • 打赏
  • 举报
回复
呃...


现在的项目没有用到SERVLET或者是JSP
以前都是直接通过SOCKET通信的
这次换了个合作方
使用WEB SERVICE也是他们提出来的
所以我才不得不用上完全不熟悉的技术来做这个东西

想想
做JAVA不是很久(以前是搞DELPHI的)
WEB上的应用很久以前做过
也只是做过,勉强可以做出来
真正的理解的并不多
可以说是:知其然不知其所以然

说实话
包括你所说的"流"的使用
我都很少用到
等会还要去翻文档

我想
首先是应该知道怎么做
再去想为什么这么做
不是为自己找借口
做工作不是搞学习,以前总觉得做出来就OK了
东西做出来后,也很少去自觉的优化

其实最近段时间渐渐的也觉得
这样工作下去还只是一个"VC"专家...
老紫竹 2008-01-29
  • 打赏
  • 举报
回复
哇?request 如果都不知道,我真是有点...不可理解了。

对方在向我方的WEB服务器发送XML数据
你怎么拿到的数据,难道不用request吗?
还是你们接收数据的程序,根本不是java做的?????
java只有servlet/jsp 用于http级别的数据交互,如果你们用Socket 交换数据, 那就直接就有Stream 了!
hulizerg 2008-01-29
  • 打赏
  • 举报
回复
那这个request对象是从哪来的呢?

以前在写这个处理请求类的时候
我给的参数是String
Document doc = new Document(str)
刚看了你的回复后
现在改成了InputStream
Document doc = new Document(inputStr)
现在是否需要将这个参数改成Request呢?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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