GCs are complicated beasts: .NET Core, 35000 lines

Muahmmad Adel via Digitalmars-d digitalmars-d at puremagic.com
Fri Feb 6 01:38:47 PST 2015


On a previous reddit thread, Andrei Alexandrescu said that he 
will be rewriting the GC based on the core allocator. However 
there were no more details about this anticipated garbage 
collector features.

So will the garbage collector be a generational one? will it 
allow some sort of control over latency of garbage collection ( 
allowing a low latency option or something similar).

We had this case that we faced with ElasticSearch, where garbage 
collection firing non-deterministically (non deterministic firing 
time and non deterministic garbage collection time) causes one 
node to suddenly be not responding, increasing load over other 
nodes, which in turn when having higher load go into garbage 
collection halt one after the other, which causes the whole 
system to be unresponsive for a good amount of time.

This is an  example of thundering herd anti pattern where one 
event causes all nodes to go busy.

I am not a java developer but I think that java's GC allows more 
control over things and ElasticSearch simply didn't use these 
controls or used them inefficiently.

However, with the increasing trend towards distributed server 
applications, having more control over the garbage collector's 
performance parameters would be crucial for pushing D to this 
area.



More information about the Digitalmars-d mailing list