Ich möchte lesen Sie einen großen InputStream und geben Sie es als String zurück. Dieser InputStream ist ein großer. Normalerweise benötigt es viel Zeit und viel Speicher, während es ausgeführt wird. Der folgende Code ist der, den ich bisher entwickelt habe. Ich muss diesen Code konvertieren, da es die Arbeit in einem geringeren zeitaufwendigen geringeren Speicher erledigt.Tuning der Leistung beim Lesen eines großen InputStream in Java
Können Sie mir eine Idee, dies zu tun.
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();
Vielen Dank!
, was eine „Menge“ der Erinnerung ist. Es ist unvermeidlich, dass Sie genug Speicher benötigen, um den gesamten String, den Sie bauen, zu halten. Siehst du etwas dramatisch schlechter als erwartet? – djna
was liest du? – dogbane
Ja. es stimmt, dass der verbrauchte Speicher proportional zur Größe der Antwort (String) ist. Aber hier geht es darum, den Speicher effektiv zu nutzen (Reduzierung der unnötigen Speicherauslastung, etc.). Für ein Beispiel hier habe ich den StringBuilder verwendet, anstatt die Eingabe mit + 's (wie str = str + newStr) an eine selbe Zeichenkette anzuhängen, um die unnötige Speicherauslastung zu reduzieren. So erwartete ich weitere Ideen, um meinen Code viel besser zu machen, indem ich das Gedächtnis verwalte und den Code beschleunige. – Namalak