gpt4 book ai didi

java - 使用 akka 流将数据分块写入文件

转载 作者:行者123 更新时间:2023-12-02 05:52:16 25 4
gpt4 key购买 nike

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

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))

VisualVM 绘制 1Gb 文件的顺序加载图。 enter image description here

是否有机会以 block 的形式写入数据并在写入后立即从内存中逐出 block

最佳答案

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

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

sbt -mem 124 run

应用程序没有崩溃,它只是使用了尽可能多的可用内存。 enter image description here

关于java - 使用 akka 流将数据分块写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59082262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com