【发布时间】:2016-03-05 21:30:25
【问题描述】:
我在代码的下面一行收到 OOM 错误。有没有办法解决它?我尝试将堆大小增加到无用。
FileInputStream inputDoc = new FileInputStream(inputDoc1);
byte[] bytes = IOUtils.toByteArray(inputDoc);
upl.edmsDocument = bytes;
更新: 添加了以下参数-Xms2048m -Xmx2048m -Xincgc 然后我可以连续上传几个大文件,但性能并不一致。
【问题讨论】:
-
那么,文件有多大?
-
任何大于 10MB 的内容都会失败。但是,如果我发送 5 个 3MB 的文件,则不会出错。
-
增加堆或流式传输数据
-
就像我说的,增加堆大小不起作用。如何流式传输数据?
-
你尝试增加多少堆大小?无论如何,这一切都取决于之后的数据会发生什么。基本规则是 - 每次处理数据块而不是将其全部读入内存。
标签: java file stream out-of-memory bytearray