Home > database >  What makes C# Garbage Collection slow?
What makes C# Garbage Collection slow?

Time:04-21

I was wondering which of these parameters have the most impact on GS's performance:

  • object count
  • object size
  • object generation

Specifically, which of these determine how long the CPU freezes all threads in order to clean up. I guess I'm hoping that the number of objects only causes significantly more work during execution, but does not extend the duration of the freeze. Like collecting trash into a bag may take more time, if there is more trash, but throwing the bag into a dumpster (or whatever) takes just as long, (almost) regardless of how many items are in it.

Is this thought naive?

CodePudding user response:

There's no a single answer to this question but there is a general "The one rule to remember" from Maoni Stephens, the lead developer of .NET GC:

"What survives usually determines how much work GC needs to do; what doesn't survive usually determines how often a GC is triggered."

The relation between "how much work GC needs to do" and pauses that it introduce (as it seems you are mostly concerned about this aspect) is a different story and heavily depends on the specific GC implementation.

As I feel you are interested in GC internals, I strongly recommend to read the linked document and also watch my ".NET GC Internals" series.

  • Related