interessante OutOfMemoryException mit StringBuilder

Ich habe die Notwendigkeit, kontinuierlich große Zeichenfolgen in einer Schleife zu erstellen und in einer Datenbank zu speichern, die derzeit gelegentlich eine liefertOutOfMemoryException.

Was hier grundsätzlich vor sich geht, ist, dass ich einen String mit erstelleXmlWriter mitStringBuilder basierend auf einigen Daten. Dann rufe ich eine Methode aus einer externen Bibliothek auf, die diese XML-Zeichenfolge in eine andere Zeichenfolge konvertiert. Danach wird der konvertierte String in der Datenbank gespeichert. Das Ganze wird in einer Schleife für verschiedene Daten etwa 100-mal wiederholt.

Die Strings selbst sind nicht zu groß (jeweils unter 500 kByte) und der Prozessspeicher nimmt während dieser Schleife nicht zu. Aber trotzdem bekomme ich gelegentlich eineOutOfMemeoryExcpetion innerhalbStringBuilder.Append. Interessanterweise führt diese Ausnahme nicht zu einem Absturz. Ich kann diese Ausnahme abfangen und die Schleife fortsetzen.

Was geht hier vor sich? Warum sollte ich eine bekommen?OutOfMemoryException obwohl im system noch genügend speicher frei ist? Ist das ein GC-Heap-Problem?

Was kann ich tun, damit das Konvertieren all dieser Zeichenfolgen zuverlässig funktioniert? Sollte ich eine GC-Sammlung erzwingen? Sollte ein setzenThread.Sleep in die Schleife? Soll ich aufhören zu benutzenStringBuilder? Sollte es einfach wiederholen, wenn Sie mit einem Problem konfrontiert werdenOutOfMemoryException?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage