: 그것은 유일한 참조 목록이 와서 어떻게 세대 0 [0] 오브젝트 동안GC의 세대 - 다음 코드를 감안할 때 수집 문제
namespace GcDemo
{
class Program
{
static void Main(string[] args)
{
var list = new List<object>();
Console.WriteLine("list is in {0} generation.", GC.GetGeneration(list));
GC.Collect();
Console.WriteLine("list is in {0} generation.", GC.GetGeneration(list));
GC.Collect();
list.Add(new object());
Console.WriteLine("list is in {0} generation. object is in {1} generation.", GC.GetGeneration(list), GC.GetGeneration(list[0]));
GC.Collect(0);
Console.WriteLine("list is in {0} generation. object is in {1} generation.", GC.GetGeneration(list), GC.GetGeneration(list[0]));
}
}
}
목록 객체가 2 세대에하지에 알고 GC에서 그것을 수집하십시오. 콜렉트 (0)?
'object' 인스턴스가 수집 될 것으로 기대 했습니까? –
@BrianRasmussen 예. –
왜 그런가? 그것은 여전히 뿌리가 나서 수집 할 자격이 없습니다. gen0 객체가 gen1 또는 2의 객체에 의해 안정적으로 루팅 될 수없는 경우 세대 전체에 대한 아이디어는 무의미합니다. –