我有几个 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 位;我想要摆脱这种内存不足错误的方法:
- 我原以为单独的 XForms 提交将是单独的事务,因此不会累积导致内存不足问题
- 有没有办法使用 XForms Submissions 处理器而不是在内存中创建完整文档来执行流式加载?
- 我不知道这是否有帮助,但有没有办法在 Orbeon 中执行积极的垃圾收集,这样我就不会遇到内存不足的问题?
如果需要,我可以在此处发布代码(用于 XPL)。
源代码(回复要求它的评论)