gpt4 book ai didi

java - 通过流将多部分文件上传到Amazon S3时内存使用率很高?

转载 作者:行者123 更新时间:2023-12-02 12:03:00 32 4
gpt4 key购买 nike

我的Java Spring应用程序中的以下方法直接流式传输文件并将其上传到Amazon S3存储桶。我研究过,使用流将使大文件(对于我的用例而言,> 100MB视频)的上传可以提高内存效率。当使用25MB的文件测试该方法时,我的Java Spring应用程序在Kubernetes集群设置中的内存使用量增加了200MB!我还尝试了一个200MB的文件,内存再次飙升至2GB。没有引发内存不足异常,但内存使用率并未下降。为什么会这样?

public void uploadFile(MultipartFile file, String saveFileName) {
try {
ObjectMetadata metadata = new ObjectMetadata();

if (file.getContentType() != null){
om.setContentType(file.getContentType());
}

metadata.setContentLength(file.getSize());

saveFileName = saveFileName.replaceAll(" ", "");

InputStream stream = file.getInputStream();

PutObjectRequest request = new PutObjectRequest(bucketName, saveFileName, stream, metadata);
request = request.withMetadata(om);

s3client.putObject(request);

stream.close();
} catch (AmazonClientException | IOException exception) {
// handle exception
}
}

最佳答案

有多种处理大文件上载的方法。

  • 使用后台任务将字节数组写入磁盘并上传到S3
    也许。
  • 存储在内存中并直接上传对象(不好不好
    选项,除非您设置了非常低的文件上传限制)

  • 看看 this git repo如何实现上述方法

    我在这里看不到您的用例。但是,如果还要处理UI,请考虑使用 pre-signed S3 URLs直接从UI上传文件。

    关于java - 通过流将多部分文件上传到Amazon S3时内存使用率很高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245893/

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