我有一个对象,我想使用JAXB编组并写入文件异步。
我尝试编写内容(大约300mb),然后使用AsynchronousFileChannel编写文件。 不幸的是它在编组期间启动java.lang.OutOfMemoryError:Java堆空间
protected String getFormattedFileContent(T fileContent) throws Exception {
StringWriter stringWriter = new StringWriter();
final JAXBContext jaxbContext = JAXBContext.newInstance(fileContent.getClass());
final Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
jaxbMarshaller.marshal(fileContent, stringWriter);
return stringWriter.toString();
}
编辑:编组需要很长时间才能将大对象编组为XML,因此我将编组和编写文件启动到单独的线程中