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

Reply via email to