【发布时间】:2013-06-05 22:42:56
【问题描述】:
我是 Java 新手。我有这个 2 GB 的 xml 文件,我需要对其进行解析并将其数据存储到数据库中。
StackOverflow 上的某个人建议我使用 Dom4j 处理长 xml 文件。解析做得很好,但返回的文档(由 Dom4j)很长,并且在迭代时会将所有 DOM 对象加载到内存(堆)中。
这会导致内存不足异常。有人可以帮助我如何避免此类错误吗?我们在 Java 中是否存在一些 Java 中按需堆分配和沉积的现象?
【问题讨论】:
-
是否可以选择 SAX 或 StAx?您需要内存中的所有数据吗?
-
使用 stax 解析器,增加堆大小。
-
最快的解决方案:使用更多内存运行您的 Java 应用程序(尝试使用 4 GB)。模式详细解决方案:不要将整个 XML 保存在内存中(因为它不适合),而是分块处理。
标签: java jakarta-ee