큰 InputStream 읽고 문자열로 반환합니다. 이 InputStream은 큰 것입니다. 그래서, 일반적으로 그것은 excuting하는 동안 많은 시간과 많은 메모리를 필요로합니다. 다음 코드는 지금까지 개발 한 코드입니다. 이 코드는 시간이 오래 걸리는 적은 메모리로 작업을 수행하므로 변환해야합니다.Java에서 큰 InputStream을 읽는 성능 튜닝
저에게 알려주세요.
BufferedReader br =
new BufferedReader(
new InputStreamReader(
connection.getInputStream(),
"UTF-8")
);
StringBuilder response = new StringBuilder(1000);
char[] buffer = new char[4096];
int n = 0;
while(n >= 0){
n = br.read(buffer, 0, buffer.length);
if(n > 0){
response.append(buffer, 0, n);
}
}
return response.toString();
고마워요!
메모리의 "많은"무엇입니까? 당신이 만들고있는 문자열 전체를 유지할만큼 충분한 메모리가 필요합니다. 기대했던 것보다 극적으로 더 나쁜 것을보고 있습니까? – djna
당신은 무엇을 읽고 계십니까? – dogbane
예. 소비 된 메모리가 응답 (String)의 크기에 비례한다는 것은 사실입니다. 하지만 여기에서는 메모리를 효과적으로 사용하려고합니다 (불필요한 메모리 사용량 감소 등). 여기의 예제에서는 불필요한 메모리 사용을 줄이기 위해 + 문자열 (str = str + newStr)을 사용하여 동일한 문자열에 입력을 추가하는 대신 StringBuilder를 사용했습니다. 이와 같이, 나는 메모리를 관리하고 코드를 빠르게함으로써 내 코드를 훨씬 더 잘 보이게하는 더 많은 아이디어를 기대했다. – Namalak