Alex Rivera | Logout

StringBuilder for string concatenation throws OutOfMemoryException

Asked 2008-12-12T18:20:41.623
16

We mostly tend to following the above best practice.

Have a look at String vs StringBuilder

But StringBuilder could throw OutOfMemoryException even when there is sufficient memory available. It throws OOM exception because it needs "continuous block of memory".

Some links for reference StringBuilder OutOfMemoryException

and there are many more.....

How many of you faced this problem or aware and what did you do to resolve it?

Is there anything I am missing?

P.S: I wasn't aware of this.

I have rephrased the question.

*** The same thing worked with manual concatenation(I'll verify this and update SO). The other thing that caused me concern was that there is enough memory in the system. That's the reason I raised this question here to check whether any one faced this problem or there was something drastically wrong with the code.

Edit
Report

2 Answers

4

If StringBuilder is going to throw an OutOfMemoryException in your particular situation, then doing manual string concatenation is NOT a better solution; it's much worse. This is exactly the case (creating an extremely, extremely long string) where StringBuilder is supposed to be used. Manual concatenation of a string this large will take many times the memory that creation of a string with StringBuilder would take.

That said, on a modern computer, if your string is running the computer out of contiguous memory your design is deeply, deeply flawed. I can't imagine what you could possibly doing that would create a string that large.

answered 2008-12-12T18:33:22.957
2

If you are running soclose to your memory limits that this is even a concern, then you should probably think about a different architecture or get a beefier machine.

answered 2008-12-12T18:29:49.670

Your Answer