HttpURLConnection上传大文件内存溢出的原因及解决办法
由于HttpURLConnection默认是有缓存机制的,在对文件操作时,会将读取的数据写入到缓存区中,并不是直接写入到服务器上,只有当流被关闭时,才将数据提交到服务器上。当缓存区的数据大于虚拟机给点的内存时,就导致内存溢出。
解决办法: conn.setChunkedStreamingMode(0);设置该选项,则不使用HttpURLConnection的缓存机制,直接将流提交到服务器上。
由于HttpURLConnection默认是有缓存机制的,在对文件操作时,会将读取的数据写入到缓存区中,并不是直接写入到服务器上,只有当流被关闭时,才将数据提交到服务器上。当缓存区的数据大于虚拟机给点的内存时,就导致内存溢出。
解决办法: conn.setChunkedStreamingMode(0);设置该选项,则不使用HttpURLConnection的缓存机制,直接将流提交到服务器上。