Doubts about .NET Garbage Collector
        Posted  
        
            by Smjert
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Smjert
        
        
        
        Published on 2010-04-08T11:32:10Z
        Indexed on 
            2010/04/08
            11:43 UTC
        
        
        Read the original article
        Hit count: 354
        
c#
|garbage-collector
I've read some docs about the .NET Garbage Collector but i still have some doubts (examples in C#):
1)Does GC.Collect() call a partial or a full collection? 2)Does a partial collection block the execution of the "victim" application? If yes.. then i suppose this is a very "light" things to do since i'm running a game server that uses 2-3GB of memory and i "never" have execution stops (or i can't see them..). 3)I've read about GC roots but still can't understand how exactly they works. Suppose that this is the code (C#):
MyClass1:
[...] 
public List<MyClass2> classList = new List<MyClass2>(); 
[...]
Main:
main()
    {
     MyClass1 a = new MyClass1();
     MyClass2 b = new MyClass2();
     a.classList.Add(b);
     b = null;
     DoSomeLongWork();
    }
Will b ever be eligible to be garbage collected(before the DoSomeLongWork finishes)? The reference to b that classList contains, can it be considered a root? Or a root is only the first reference to the instance? (i mean, b is the root reference because the instantiation happens there).
© Stack Overflow or respective owner