GG.reserve can be handy for this. It tells the GC to pre allocate a block of memory from the OS.
On Jan 31, 2013, at 7:12 AM, "Steven Schveighoffer" <schvei...@yahoo.com> wrote: > On Wed, 30 Jan 2013 03:15:14 -0500, Mike Parker <aldac...@gmail.com> wrote: > >> My understanding is that the current implementation only runs collections >> when memory is allocated. Meaning, when you allocate a new object instance, >> or cause memory to be allocated via some built-in operations (on arrays, for >> example), the GC will check if anything needs to be collected and will do it >> at that time. I don't know if it's run on every allocation, or only when >> certain criteria or met, and I really don't care. That's an implementation >> detail. The D language itself does not specify any of that. > > This isn't quite accurate. > > The GC first checks to see if there is a free block that would satisfy the > allocation, and if it can't find one, THEN it runs a collection cycle, and if > then it cannot allocate the block from any memory regained, it then asks for > more memory from the OS. > > This can lead to the collection cycle running quite a bit when allocating > lots of data. I don't know if there are any measures to mitigate that, but > there probably should be. > > -Steve