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

数据传输,对dom4j的性能疑惑

这是一个数据传输程序,将数据传输到另一个节点服务器上,
约定的交互数据包为xml格式,xml格式比较复杂,但主要分2部分

1.数据包描述
2.数据包内容


其中数据包内容为CDATA,里面还是一个xml包


每天传输大约是5000个包左右,

使用的是dom4j来进行xml的生成和解析,目前的方式是每个包过来我都new 一个 新的 Document,然后进行打包或者解析,
但发现Document这个对象是个很大的对象,怕这样是否会影响性能,或时间长造成内存不足,如果对原有的Document进行缓存,那么就要进行节点的更新和删除,
这样程序又复杂了,而且性能行不行也不知道,请大家帮忙分析下


第1次做java程序,对java不熟悉,帮忙看看

------最佳解决方案--------------------
Document对像你肯定是可以只声明一次, 这样相对应的内存地址只保留一份
但每次Document对像使用完之后, 调用下 Document.clearContent() 方法

声明部分

SAXReader reader = new SAXReader();
Document doc = null;


给Document对像赋值

doc = reader.read(new ByteArrayInputStream(xml.getBytes()));


使用完成后

doc.clearContent();


------其他解决方案--------------------
包很多的话可以不用dom方式解析 转而使用流的方式
可将数据存至数据库方便更新和删除工作
------其他解决方案--------------------
w360188606 ,用流的方式可能不行,因为已经定下来是xml数据包方式通讯,不可能进行更改。
现在只考虑的效率问题,而且数据本来就在数据库中,只是从数据库取出,打成包发给另1个服务器而已。

每天数据量大概40万左右,数据包内容进行了压缩和编码


------其他解决方案--------------------
明白了,谢谢shaot399
也感谢w360188606