1. 程式人生 > >HttpURLConnection上傳大檔案記憶體溢位的原因及解決辦法

HttpURLConnection上傳大檔案記憶體溢位的原因及解決辦法

原因:

由於HttpURLConnection預設是有快取機制的,在對檔案操作時,會將讀取的資料寫入到快取區中,並不是直接寫入到伺服器上,只有當流被關閉時,才將資料提交到伺服器上。當快取區的資料大於虛擬機器給點的記憶體時,就導致記憶體溢位。

HttpURLConnection設定固定快取長度的程式碼:


HttpURLConnection設定快取模式的程式碼:


解決辦法:

conn.setChunkedStreamingMode(0);設定該選項,則不使用HttpURLConnection的快取機制,直接將流提交到伺服器上。