On Tuesday, 19 November 2013 at 05:38:14 UTC, Jesse Phillips wrote:
So apparently substrings were considered a common cause of memory leaks.
I think it is pretty important to remember that slicing, while giving you a small view, still holds the entire array. I think there is nothing wrong with pipping a ".dup" every now and then, after slicing something. As a matter of fact, I've been playing around with transcoding strings (UTF-8/16/32). I start by allocating a large buffer to write into. When I'm done, I look at the buffer's useage, and if it's too low, I return a dup of the buffer slice, allowing the GC to reclaim the original buffer. Not only does this take up less memory, but overall, I actually get better run-times too (!)