我正在尝试使用 JDOM2 读取 XML, 我在我的电脑上测试,它没有问题。 当我尝试在 Windows Server 2012 上使用这个程序时,问题就开始了,因为当它试图从文档中获取子项时出现错误“堆空间”。 我尝试为 Windows Server 上的虚拟机添加更多内存,但没有成功。
我尝试使用选项“SlimJDOMFactory”但没有成功。
文档的大小将近 150MB,总共或多或少有 20.000 个元素。
我能做什么?
这是我的代码的一部分。
List<prescription> medicamentos = new ArrayList<prescription>();
SAXBuilder builder = new SAXBuilder();
builder.setJDOMFactory(new SlimJDOMFactory());
File prescriptionFile = new File("Download" + File.separator + "Prescripcion.xml");
try {
Document document = (Document) builder.build(prescriptionFile);
Element rootNode = document.getRootElement();
List<Element> list = rootNode.getChildren();
.........
} catch(Exception a) {
}
最佳答案
DOM 读取完整的 xml 文档并将其加载到您的 RAM 中。如果您对 RAM 大小有疑问,您应该考虑使用另一个 xml 解析库,如 SAX或 StAX .
使用其中之一也将加速您的代码,因为您可以有选择地从您的 xml 文件中读取。 有关差异的更多信息,请查看以下问题:Java: Parsing XML files: DOM, SAX or StAX?
这tutorial解释了所有这些的用法。
关于java - 使用 JDOM2 获取子对象的堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45864493/