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;
}
코드는 잘 작동하지만 매우 큰 객체를 직렬화 때 메모리 오류 자바 힙 공간이 부족 얻을 :이를 위해 다음 코드를 사용하고 있습니다. 이 문제를 방지 할 수있는 방법이 있습니까? 객체가 커지면서 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)
감사합니다, 제임스 포드
개체가 serilaized 될 때 개체를 탐색 할 때 개체를 작성해야합니다. 반복되는 참조의 경우 구조의 모든 객체를 기록해야하지만 매우 큰 수의 객체가 없으면 중요하지 않습니다. 당신이 할 수있는 가장 간단한 일은 최대 힙 크기를 늘리는 것입니다. –
우리는 XML과 관련 자바 파일의 예제가 필요합니다 ... – Kartoch