java.lang.OutOfMemoryError 用于在 FileOutputStream 中写入 InputStream

java.lang.OutOfMemoryError for writing of InputStream in FileOutputStream

我看不懂,我做错了什么:

public static void writeToFile(InputStream inputStream, File file) throws IOException, FileNotFoundException {
    OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
    try {
        int size = 1024 * 1024;
        byte[] buf = new byte[size];
        int byteRead;
        while ((byteRead = inputStream.read(buf)) > 0) {
            outputStream.write(buf, 0, byteRead);
        }
        outputStream.close();
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

异常:

6157-6185/com.wiserep E/AndroidRuntime﹕ FATAL EXCEPTION:
IntentService[SynchronizationService] java.lang.OutOfMemoryError
    at java.lang.String.<init>(String.java:432)
    at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:642)
    at java.lang.StringBuffer.toString(StringBuffer.java:723)
    at com.splunk.mint.network.io.InputStreamMonitor.updateBody(InputStreamMonitor.java:104)
    at com.splunk.mint.network.io.InputStreamMonitor.read(InputStreamMonitor.java:71)
    at com.wiserep.web.HttpTransport$HttpHelper.writeToFile(HttpTransport.java:196)    

图书馆:

可能是因为您请求的内存块太大,而 phone 没有足够大的连续块来分配它,这就是它给出 Outofmemoryerror 的原因。尝试降低块大小

您正在使用 Splunk Mint 监控应用程序。该错误存在于 Splunk 的代码中:它试图创建一个包含流的全部内容的字符串,谁知道是为了什么,这就是导致应用 运行 内存不足的原因。必须有一种方法来限制 Splunk Mint 捕获的流部分的大小,或者完全禁用此特定功能。