To complement what has been said, even if someone were to add the Remove method (that the StringBuilder class in the .NET Framework alread has), it wouldn't realease the unused memory. The .NET Framework clearly states that the Remove method *doesn't* change the capacity of the StringBuilder object, so if it has a capacity of 120MB before the Remove, it will still have that capacity after. On the other hand, one can then reuse the object and reuse the already allocated memory, so it's not completely useless.