0

我有几个 for-each 循环,用于迭代配置 XML 的元素,该配置 XML 的大小非常小(磁盘上 2 KB),以动态到达源 URL 和目标 URL。然后,我使用(因为它执行流式传输)从源 URL 检索数据,URLGenerator并使用 XForms Submissions 处理器将其加载到 XML 数据库。源 URL 和目标 URL 是动态计算的,检索和加载发生的最内层循环总共发生约 32 次,每次平均约 4.5 MB 的 XML 文件(最大约 6 MB,最小几 KB )。每次我尝试这个时,我都会遇到内存不足错误,因为 Tomcat 使用 permgen 和大量分配的堆大小运行,JVM 是 32 位,操作系统是 32 位;我想要摆脱这种内存不足错误的方法:

  1. 我原以为单独的 XForms 提交将是单独的事务,因此不会累积导致内存不足问题
  2. 有没有办法使用 XForms Submissions 处理器而不是在内存中创建完整文档来执行流式加载?
  3. 我不知道这是否有帮助,但有没有办法在 Orbeon 中执行积极的垃圾收集,这样我就不会遇到内存不足的问题?

如果需要,我可以在此处发布代码(用于 XPL)。

源代码(回复要求它的评论)

4

1 回答 1

0
  1. 如果您oxf:xforms-submission在循环内部运行,它们将独立运行,并且在循环中上传 30 个文档应该只占用最大文档所需的内存。
  2. XForms 提交需要在内存中有完整的文档才能上传;它不支持流式传输(与 不同oxf:url-generator)。
  3. 默认 VM pergen 设置通常太低,因此我建议您尝试增加 permgen 空间
于 2011-06-03T00:09:55.730 回答