我们的应用程序抛出 OutOfMemory 已经有一段时间了。起初我们认为这是由于集合使用效率低下造成的,但在更深入地分析应用程序和堆转储后,看起来是 Apache camel 导致了这个内存问题。我们每天从 SFTP 中提取文件并在进行数据处理和插入数据库之前对其进行解密。看起来 Apache camel 没有从它的 jsch 缓冲区中释放内存。
我们的骆驼很简单,这里分享一个示例 from("sftpUrl"+dynamic_fileName+".pgp"+"&noop=true&delay=5m&stepwise=false").routeId("id").process(isNotAllprocessed).unmarshal().pgp (somekey,user,pwd).unmarshal().string().process(writeToDBProcessor).log("Done");
我们尝试使用 streamcaching() 并重构处理器,但没有解决这个问题。
堆栈溢出中 apache camel 的其他解决方案似乎与 JMS 一起使用,我没有找到与我的问题相关的任何内容,因此发布了这个。如果您知道现有答案,请在此处发表评论。
你们中有人遇到过这个问题吗?有人可以建议我们在这里可以做什么吗?
请解释为什么会这样?如何避免这种情况?