Understanding the GC
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Thu Jan 31 07:12:13 PST 2013
    
    
  
On Wed, 30 Jan 2013 03:15:14 -0500, Mike Parker <aldacron at 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
    
    
More information about the Digitalmars-d-learn
mailing list