1
我正在使用xstream將對象序列化爲xml作爲文件。我想要序列化的對象非常大,並且包含一個相當複雜的樹形結構。爲此,我現在用的是下面的代碼:xstream序列化堆空間
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-10 09:45:34
我們需要一個XML和相關的java文件的例子... – Kartoch 2012-04-10 09:54:26