【发布时间】:2017-02-09 09:10:37
【问题描述】:
我在下载Java 中的多部分文件时遇到内存不足 问题。
我正在使用 HttpUrlConnection 下载文件在第一行出现问题:
ByteArrayDataSource ds = new ByteArrayDataSource(con.getInputStream(),
"multipart/mixed"); //Line 1
MimeMultipart multipart = new MimeMultipart(ds); //Line 2
javax.mail.BodyPart jsonPart = multipart.getBodyPart(1); //Line 3
javax.mail.BodyPart videoPart = multipart.getBodyPart(2); //Line 4
多部分响应包含 2 个不同的文件,一个是简单的文本文件,一个是视频文件。
整个多部分响应大小超过 1 GB。
【问题讨论】:
-
哪一行报错了?您可能需要逐步处理流,而不是尝试一次全部读取。
-
你指定内存分配
Xmx值吗?您可以参考:stackoverflow.com/questions/14763079/… -
@shmosel ByteArrayDataSource ds = new ByteArrayDataSource(con.getInputStream(), "multipart/mixed");这一行给出错误。是的,我知道,但我没有得到适当的解决方案来增量读取流
-
@PavanKumar 是的,我已经指定了 Xms 内存分配,但它仍然给了我内存不足的错误。
-
@pash 您可以指定
-Xmx2g这是上限。Xms可能不会在这里引起问题。