Apache camel 在骆驼dsl中解组xml时内存不足

Apache camel 在骆驼dsl中解组xml时内存不足,apache-camel,unmarshalling,Apache Camel,Unmarshalling,我在下面的代码中面临OOM问题 from("file://" + getDumpDirLocation() + "?maxMessagesPerPoll=1&bufferSize=8192") .unmarshal().string("UTF-8") 在目录位置转储的xml文件很大(有时为1G) 我还尝试添加一个自定义处理器,但没有成功 from("file://" + getDumpDirLocation() + "?maxMessagesPerPol

我在下面的代码中面临OOM问题

from("file://" + getDumpDirLocation() + "?maxMessagesPerPoll=1&bufferSize=8192")
                .unmarshal().string("UTF-8")
在目录位置转储的xml文件很大(有时为1G)

我还尝试添加一个自定义处理器,但没有成功

from("file://" + getDumpDirLocation() + "?maxMessagesPerPoll=1&bufferSize=8192")
.process(this.getRemoveInvalidXmlCharacterProcessor())
有没有办法避免这种内存不足异常

因此,基本上处理器中的exchange.getIn().getBody(String.class)抛出OOM,因为考虑到转储的XML文件的大小,对象结构非常庞大


谢谢。

这是一个Java内存异常。我想这跟骆驼没什么关系。分离到一个定制处理器不会有任何区别

必须增加JVM的运行时内存。 如果您使用的是Eclipse,请将-Xmx2048M设置为要运行的特定应用程序的运行配置下的VM参数


如果在任何其他环境中,您都可以进行简单的搜索,找出如何增加java heapsize,这应该可以解决问题。

将1GB的文件读入内存并不是一个好主意。而是使用流媒体“分块”读取文件


如果您想处理大的XML文件,那么请阅读其中的一些文章,您可以在这里找到:关于拆分大的XML文件。只需在该页面上搜索xml,就可以找到链接。

假设使用了-Xmx2048M,那么如果要处理的文件大小超过2GB会发生什么情况。