2012-03-04 3 views
1

파일을 웹 서비스로 직접 스트리밍하려고합니다. 이를 위해 은 내가 메인 메모리는 같은 파일 내용의 저장에 사용되지 않을 것을 기대했다 여기작성기로 스트리밍 할 수 없습니다.

while(<Read from file , line>){ 
    out.write(line); 
    out.flush(); 
} 

out.close(); 

내가로 데이터를 기록 유지

 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(); 

다음을 사용하여 작가를 만들었 한 번에 파일에서 단 하나의 줄이있을 것입니다.

그러나 코드를 실행하면 메모리 사용량이 급증하고 파일 내용이 주 메모리 어딘가에 저장됩니다. 힙 덤프에서 PosterOutputStream은 대부분의 공간을 차지합니다.

+1

얼마나 많은 기억을하고 있습니까? 커버 아래에는 필연적 인 버퍼링이있을 것입니다. –

+0

저는 GB의 메모리를 말하고 있습니다. 나는 약간의 버퍼링에 신경 쓰지 않는다. "약간"인 경우 –

+0

GB 범위의 메모리를보고있는 경우 다른 문제가 있습니다. 우리는 세부 사항 없이는 말할 수 없습니다. –

답변

1

청크 분할을 사용하도록 설정하면 문제가 해결되었습니다. ((HttpURLConnection) urlconnection) .setChunkedStreamingMode (1024 * 1024);

관련 문제