gpt4 book ai didi

java - IOUtils.toByteArray() 内存溢出错误

转载 作者:搜寻专家 更新时间:2023-11-01 07:59:26 26 4
gpt4 key购买 nike

我尝试压缩超过 100Mb 的大型视频文件。

public static void compress(File input, File output) throws    IOException {
InputStream fis = new FileInputStream(input);
byte[] bFile = IOUtils.toByteArray(fis);
FileOutputStream fos = new FileOutputStream(output);
GZIPOutputStream gzipStream = new GZIPOutputStream(fos);
try {
gzipStream.write(bFile);
// IOUtils.copy(fis, gzipStream);
} finally {
gzipStream.close();
fis.close();
fos.close();
}
}

每次我遇到outofmemoryerror。

最佳答案

你应该逐步复制数据,这样你就不会耗尽内存。

public static void compress(File input, File output) throws IOException {
try(InputStream in = new FileInputStream(input);
OutputStream out = new GZIPOutputStream(new FileOutputStream(output))) {
byte[] bytes = new byte[4096];
for(int len; (len = in.read(bytes)) > 0; )
out.write(bytes, 0, len);
}
}

无论文件大小如何,这将立即使用大约 4 KB 作为缓冲区。 (我怀疑 GZIP 使用大致相同的方式来完成它的工作)

关于java - IOUtils.toByteArray() 内存溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265857/

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