title: Why classes with finalizers need more than one garbage collection cycle?
body: <p><a href="http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/" rel="noreferrer">This</a> article says</p>
  
  <blockquote>
    <p>If an object has a finalizer, it is not immediately removed when the
    garbage collector decides it is no longer ‘live’. Instead, it becomes
    a special kind of root until .NET has called the finalizer method.
    This means that these objects usually require more than one garbage
    collection to be removed from memory, as they will survive the first
    time they are found to be unused.</p>
  </blockquote>
  
  <p>My question is why GC don't call finalizer when it finds that object can't be referenced anymore and collect the object right away? why does it need more than on garbage collection?</p>