StringBuilder effektiv auf OutputStream schreiben

Wladimir

Mitglied
Hallo,
vielleicht kennt jemand eine gute Lösung, es geht um Speichereffizienz und Performance.

Ich erstelle im Speicher ein XML mit StringBuilder und will dieses nachhen per OutputStream streamen (Netzwerk TCP/IP oder Datei).
Das XML kann bis 100 MB groß werden. Das Problem ist:
Java:
outputStreamWriter.write(stringBuilder.toString());
kopiert den ganzen String im Speicher. .getChars() kopiert auch. Das ganze summierte sich zeitmäßig beim Kopieren.

Ich suche eine Lösung um von einem "dynamischen Array" (StringBuilder, ...) direkt zu stream ohne dazwischen die Inhalte im Speicher nochmals zu kopieren.
 
S

SlaterB

Gast
das char[] darin ist nicht öffentlich, da kommst du höchstens unsauber über Reflection ran,
oder mit charAt() einzeln abfragen,

du könntest noch den Quellcode komplett kopieren..
 

Wladimir

Mitglied
Verwende jetzt
Java:
CharArrayWriter.writeTo (OutputStream out)
scheint ganz gut zu funktionieren. Verbraucht tatsächlich weniger speicher ohne zu kopieren. Ist aber komischerweise etwas langsamer als StringBuilder.

Mein Test mit JDK 1.5_07 war:
Für das erstellen und schreiben eines 80MB Strings in eine Datei:

StringBuffer .. 7,4 sec
StringBuilder.. 3,9 sec
CharArrayWriter .. 6,6 sec
ByteArrayOutputStream 11,2 sec

Die letzten beiden verbrauchten weniger speicher.

Habe vorher auch die Lösung mit Reflection probiert, würde ja auch gut klingen, doch leider stelle es das Programm auf einer IBM VM auf.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
Thallius Merkwürdiges StringBuilder verhalten (Char Encoding) Allgemeine Java-Themen 6
V Stringbuilder zickt rum? -> Eclipse Allgemeine Java-Themen 12
B StringBuilder von File einlesen Allgemeine Java-Themen 8
A Problem mit StringBuilder delete - find den Fehler nicht Allgemeine Java-Themen 9
T String vs StringBuilder vs StringBuffer Allgemeine Java-Themen 8
G Optimierung StringBuilder Allgemeine Java-Themen 9
Escorter StringBuilder automatisch? Allgemeine Java-Themen 7
P StringBuffer, StringBuilder und StringWriter Allgemeine Java-Themen 4
D StringBuilder kaputt? Allgemeine Java-Themen 2
Y StringBuilder vs. Stringverkettung Allgemeine Java-Themen 61
G wieso wird der String des StringBuilder immer länger? Allgemeine Java-Themen 2
G StringBuilder Allgemeine Java-Themen 4
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
T Input und Outputstream , serielle Schnittstelle Allgemeine Java-Themen 1
Meeresgott Input/Output OutputStream löscht Datei Allgemeine Java-Themen 7
F Jar OutputStream Allgemeine Java-Themen 4
T Outputstream write() gets blocked using RXTX to communicate with HC-05 BT Module Allgemeine Java-Themen 10
D Java Process OutputStream ist null Allgemeine Java-Themen 4
P Input/Output Process.getErrorStream = OutputStream Allgemeine Java-Themen 11
G Auf Kommandozeile über Processobjekt mit Outputstream Allgemeine Java-Themen 3
M rxtx OutputStream sendet falsche werte Allgemeine Java-Themen 3
L Abspeichern von OutputStream Allgemeine Java-Themen 6
E Outputstream an verschiedenen Positionen beschreiben Allgemeine Java-Themen 4
A Eigenen OutputStream schreiben und verwenden Allgemeine Java-Themen 9
D zip Dateien schreiben mit in/outputstream Allgemeine Java-Themen 10
S OutputStream via POST senden Allgemeine Java-Themen 4
T OutputStream to InputStream Allgemeine Java-Themen 8
Landei CipherInput/OutputStream-Problem Allgemeine Java-Themen 2
S von OutputStream in InputStream schreiben ohne das es blockiert..? Allgemeine Java-Themen 2
G Double Wert über OutputStream verschicken Allgemeine Java-Themen 2
S outputstream über fileUrl Allgemeine Java-Themen 15
L Problem mit dem OutputStream eines Prozesses Allgemeine Java-Themen 9
G OutputStream to System.out Allgemeine Java-Themen 35
I input-/outputstream Allgemeine Java-Themen 6
Junktyz In Writer und Outputstream wird teilweise nicht geschrieben Allgemeine Java-Themen 3
reibi FileOutputStream aus OutputStream erstellen Allgemeine Java-Themen 7
H Problem mit OutputStream Allgemeine Java-Themen 5
T OutputStream - Prozente ermitteln Allgemeine Java-Themen 3
T OutputStream - Event bei Byte-Fluss Allgemeine Java-Themen 5
A Inputstream in Outputstream umleiten Allgemeine Java-Themen 7
D Cipher(In)OutputStream Allgemeine Java-Themen 3
R Ladebalken für einen Outputstream. Allgemeine Java-Themen 10
J Binärdateien mit Input/Outputstream lesen und schreiben Allgemeine Java-Themen 3
m@nu Schreibschutz entfernen und OutputStream öffnen Allgemeine Java-Themen 6
T Problem mit Outputstream? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben