首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BufferedOutputStream编写大文件

使用BufferedOutputStream编写大文件
EN

Stack Overflow用户
提问于 2012-02-24 12:18:56
回答 1查看 25.9K关注 0票数 5

我正在尝试使用BufferedInputStream & BufferedOutputStream读写大文件(大于100MB)。我得到堆内存问题& OOM异常。

代码如下所示:

代码语言:javascript
复制
BufferedInputStream buffIn = new BufferedInputStream(iStream);
/** iStream is the InputStream object  **/

BufferedOutputStream buffOut=new BufferedOutputStream(new FileOutputStream(file));
byte []arr = new byte [1024 * 1024];
int available  = -1;
while((available = buffIn.read(arr)) > 0) {   
    buffOut.write(arr, 0, available); 
}      
buffOut.flush();
buffOut.close();        

我的问题是,当我们使用BufferedOutputStreeam时,它是否会保留内存,直到写出完整的文件?

使用BufferedOutputStream写入大文件的最佳方式是什么

EN

回答 1

Stack Overflow用户

发布于 2012-02-24 12:40:25

您提供的代码没有任何错误。你的记忆问题一定出在别的地方。缓冲的流具有固定的内存使用限制。

当然,确定导致OOME的最简单方法是让OOME生成堆转储,然后在内存分析器中检查该堆转储。

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

https://stackoverflow.com/questions/9425332

复制
相关文章

相似问题

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