gpt4 book ai didi

java - Java中如何避免OutOfMemoryError?

转载 作者:行者123 更新时间:2023-12-01 08:11:23 24 4
gpt4 key购买 nike

我是 Java 新手。我有这个 2 GB 的 xml 文件,我需要解析它并将其数据存储到数据库中。

StackOverflow 上有人推荐我使用 Dom4j 来处理长 xml 文件。解析效果很好,但返回的 Document(由 Dom4j)非常长,并且在迭代时将所有 DOM 对象加载到内存(堆)中。

这会导致内存不足异常。有人可以帮助我如何避免此类错误吗?我们在Java中是否存在一些按需堆分配和沉积的现象?

最佳答案

你有两个选择:

  1. 重新配置 JVM 以分配更多最大内存(通过 -Xmx2g 或类似方法)。请参阅here for more info 。此选项显然还受到操作系统和系统中可用内存量的限制。
  2. 使用 API(例如 SAX ),它不会一次将所有 XML 加载到您的内存中,而是将其流式传输到您的进程中,使您无需等待即可分析它内存中的整个文档

第一个选项可能会立即为您提供帮助,但并非特定于该问题。第二个选项是更具可扩展性的解决方案,因为它允许您分析任何大小的文档。当然,您需要担心分析结果的内存消耗,但这完全是另一回事。

关于java - Java中如何避免OutOfMemoryError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17021131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com