In the CLR via C #, Richter explains that:
Special high-priority CLR thread designed to call Finalize methods
(see the heading "Completion of the Interior" of chapter 20)
This is the only context in which he talks about garbage collector flow. A little earlier in this chapter, he explains that garbage collection starts in response to one of the following events:
- Generation 0 is full
- Call
GC.Collect - Windows reports low memory.
- CLR unloads AppDomain
- CLR shuts down
... which assumes that the only thread created by the garbage collector is the only "high priority" stream finalizer.
Edit: He then continues to the “Parallel Collection” to explain that:
In a multiprocessor system running a version of the workstation of the execution engine, the garbage collector has an additional background thread to collect objects at the same time during application startup. [...] The garbage collector has a normal priority background thread that marks unreachable objects.
Tim robinson
source share