Из того, что я читаю, GC начинается с «root» и следует и маркирует все живые объекты, прежде чем GC запускает развертку. Но я не совсем уверен, что составляет корень. Например, в приведенном ниже коде метод Main запускает поток и существует. Итак, когда GC начинается, как он узнает, какую часть выбрать в качестве корня?Где начинается сборщик мусора?
static void Main()
{
var thread = new Thread(SomeLongRunningProcess);
thread.Start();
}
static void SomeLongRunningProcess()
{
}
Это могло бы помочь, если бы вы могли объяснить основную проблему, которую вы пытаетесь решить, чтобы слова: _why_ вы хотите знать? – CodeCaster
Эта статья [MSDN] (http://msdn.microsoft.com/en-us/magazine/bb985010.aspx) объясняет почти все, что вам нужно знать о GC. Часть «Алгоритм сбора мусора» связана с вашим вопросом. –
есть много материалов по этой теме в google, как это http://www.csharphelp.com/2006/08/garbage-collection/ –