原因:
由於HttpURLConnection默認是有緩存機制的,在對文件操作時,會將讀取的數據寫入到緩存區中,並不是直接寫入到服務器上,只有當流被關閉時,纔將數據提交到服務器上。當緩存區的數據大於虛擬機給點的內存時,就導致內存溢出。
HttpURLConnection設置固定緩存長度的代碼:
HttpURLConnection設置緩存模式的代碼:
解決辦法:
conn.setChunkedStreamingMode(0);設置該選項,則不使用HttpURLConnection的緩存機制,直接將流提交到服務器上。