如何解决Apache骆驼SFTP文件上传消耗大量堆内存
我正在使用apache骆驼将文件从本地计算机发送到sftp服务器。我正在尝试使用的文件大小为100MB,并且我观察到CPU使用率突然飙升并消耗了大量堆内存,您能帮我如何改善这里的性能。
文件内容是否正在读入内存?如果是的话,如何避免这种情况
因为我不想处理文件中的任何内容,所以我只是在使用该库来推送到服务器。
这是我配置路线的方式:
from("file://tmp?delete=true&localWorkDirectory=/tmp&antInclude=*.csv&readLock=changed&readLockTimeout=70000&readLockCheckInterval=1000")
.onException(Exception.class)
.log("something went wrong")
.end()
.onCompletion()
.log("file successfully delivered ${file:name}")
.end()
.log("processing file ${file:name}")
.to("sftp://127.0.0.1:22/test/in?jschLoggingLevel=INFO&password=xxxxxx&useUserKnownHostsFile=false&username=test");
解决方法
Java是一种垃圾收集语言,因此,如果有足够的可用内存,垃圾收集器将不会太急于清理未使用的内存。仅当垃圾收集器运行时,内存才会被释放。
您可以使用-Xmx java选项确定应用程序所需的内存下限,如果希望证据证明骆驼通过流传输文件,则最好使其小于要发送的文件大小,并且不会同时将整个文件内容加载到内存中。
示例:
java -Xmx100m -jar YourJarFile.jar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。