我正在尝试将文件直接流式传输到web服务。为此,我使用创建了一个Writer
URL url = new URL("http://localhost:9200/tree/public/");
URLConnection urlconnection=url.openConnection();
urlconnection.setDoOutput(true);
((HttpURLConnection)urlconnection).setRequestMethod("POST");
((HttpURLConnection)urlconnection).setRequestProperty("Content-type", "text/html");
Writer out=new OutputStreamWriter(urlconnection.getOutputStream();
接下来,我继续将数据写入其中,作为
while(<Read from file , line>){
out.write(line);
out.flush();
}
out.close();
在这里,我希望主内存不会作为一个整体用于存储文件内容。在中,一次文件中只有一行。
但在执行代码时,内存使用率飙升,很明显,文件的内容保存在主内存的某个地方。堆上转储发现PosterOutputStream
是占用大部分空间的一个。
启用分块流解决了这个问题。((HttpURLConnection)urlconnection).setChunkedStreamingMode(1024*1024);