我有一个java程序,它查询一个有数百万条记录的表,并生成一个以每条记录为节点的xml。
挑战在于程序的堆内存不足。我为程序分配了 2GB 堆。
我正在寻找创建如此巨大的 xml 的替代方法。
我们可以将部分 DOM 对象写入文件并释放内存吗?
例如,在 DOM 对象中创建 100 个节点,写入文件,释放内存,然后在 DOM 中创建接下来的 100 个节点等
将节点写入文件的代码
DOMSource source = new DOMSource(node);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
但是将节点写入文件后如何释放 DOM 内存?
最佳答案
为什么需要生成 DOM?尝试直接编写XML。从 Java 输出 XML 的最方便的 API 是 StAX XMLStreamWriter 接口(interface)。 XMLStreamWriter 有许多实现可以生成词法(序列化)XML,其中包括 Saxon 序列化程序,如果需要,它可以让您对序列化方式(例如缩进和编码)进行相当大的控制。
关于java - 将巨大的 XML 文件从 DOM 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22086664/