我正在使用xstream将一个对象序列化为xml文件。我想序列化的对象非常大,并且由一个非常复杂的树形结构组成。为此,我使用以下代码:
XStream xStream = new XStream();
xStream.omitField(Stat.class, "sources");
String XMLFilename = "XML-" + dateString + ".xml";
FileOutputStream outputStream = null;
Writer writer = null;
try {
outputStream = new FileOutputStream(currentWorkPath+XMLFilename);
writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
xStream.toXML(ss, writer);
} catch (Exception exp) {
log.error(null, exp);
} finally {
writer = null;
outputStream = null;
}代码运行良好,但我在序列化非常大的对象时遇到内存错误java堆空间不足。有什么方法可以防止这种情况发生吗?随着对象的增长,动态构建xml是可能的吗?
或者是其他的xml序列化库?
例外:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at com.thoughtworks.xstream.core.util.ObjectIdDictionary.associateId(ObjectIdDictionary.java:91)谢谢,詹姆斯·福特
发布于 2012-04-17 21:31:35
类路径上是否有Xpp3库(例如在服务器上)?类路径上没有Xpp3 (或其他类似的库)的Java5和更低版本的XStream使用DOM驱动程序。没有任何例子,我只能怀疑这一点。
https://stackoverflow.com/questions/10086227
复制相似问题