サーバーからファイルをロードするために akka バックエンドで sttp lib を使用します。次のアプローチのいずれかを使用すると、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))
1Gb ファイルの順次ロードの VisualVM プロット。
データをチャンクに書き込み、書き込み直後にメモリからチャンクを削除する機会はありますか?