首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用akka流将数据以块形式写入文件

使用akka流将数据以块形式写入文件
EN

Stack Overflow用户
提问于 2019-11-28 05:29:16
回答 1查看 197关注 0票数 3

我使用sttp和akka后端从服务器加载一个文件。下列任何一种方法都会导致加载1Gb文件的大量内存占用:

代码语言:javascript
复制
import com.softwaremill.sttp._

val file: File = new File(...)

sttp.response(asStream[Source[ByteString, Any]])
.mapResponse { src =>
    src.runWith(FileIO.toPath(file.toPath, options, 0))
}

sttp.response(asFile(file, false))

1Gb文件顺序加载的VisualVM图。

是否有机会在写入后立即用块写入数据并将从内存中删除?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-29 00:41:00

根据您的情节,您的应用程序不需要大量内存。有高达1700 MB的“峰值”,但在那之后,垃圾收集器运行堆的使用量下降到250 MB。sttp和Akka创建了许多短暂的对象;然而,垃圾收集器很好地清理了您的内存。

我使用124 MB内存运行了您的客户端应用程序,只是为了验证它不需要2GB堆来下载1GB文件:

代码语言:javascript
复制
sbt -mem 124 run

这个应用程序没有崩溃,它只是使用了尽可能多的内存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59082262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档