HttpURLConnection上傳大文件內存溢出的原因及解決辦法

原因:

由於HttpURLConnection默認是有緩存機制的,在對文件操作時,會將讀取的數據寫入到緩存區中,並不是直接寫入到服務器上,只有當流被關閉時,纔將數據提交到服務器上。當緩存區的數據大於虛擬機給點的內存時,就導致內存溢出。

HttpURLConnection設置固定緩存長度的代碼:


HttpURLConnection設置緩存模式的代碼:


解決辦法:

conn.setChunkedStreamingMode(0);設置該選項,則不使用HttpURLConnection的緩存機制,直接將流提交到服務器上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章