Я хочу, чтобы читал большой InputStream и возвращал его как строку. Этот InputStream является большим. Таким образом, обычно это занимает много времени и много памяти, в то время как оно возбуждает. Следующий код - тот, который я разработал до сих пор. Мне нужно преобразовать этот код, так как он выполняет задание в меньшей степени, занимая меньше памяти.Настройка производительности чтения большого InputStream в java
Можете ли вы дать мне какое-либо представление об этом.
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). Но здесь он собирается эффективно использовать память (уменьшая ненужное использование памяти и т. Д.). Например, я использовал StringBuilder вместо добавления ввода в ту же строку, используя + (например, str = str + newStr), чтобы уменьшить ненужное использование памяти. Таким образом, я ожидал дальнейших идей, чтобы сделать мой код намного лучше, управляя памятью и ускоряя код. – Namalak