Я могу привести пример, который будет работать с .Net CLR GC: * 1001 *
Если вы переопределяете метод finalize из класса и не вызываете метод Finalize суперкласса, например
protected override void Finalize(){
Console.WriteLine("Im done");
//base.Finalize(); => you should call him!!!!!
}
Когда вы случайно воскрешаете объект
protected override void Finalize(){
Application.ObjJolder = this;
}
class Application{
static public object ObjHolder;
}
Когда вы используете объект, который использует Finalize, требуется две коллекции GC, чтобы избавиться от данных, и в любом из приведенных выше кодов вы не удалите его.