僵尸在c#和.net中对象它们是什么以及如何避免它们



最近,我在C#中有关僵尸对象的采访中有一个问题。您能用一个简单的例子向我解释它们是什么?

该访谈中的僵尸对象与有关获奖的申请有关,例如,我们可以在ASP.NET MVC中获取这些对象吗?

感谢您抽出宝贵的时间来解释,因为我已经搜索了它,但我没有找到我能理解

的例子或解释

事件引起的僵尸情况是:

class AnObjectThatWillSoonGoOutOfScope{
  public AnObjectThatWillSoonGoOutOfScope(ISomeLongLivedService service){
    service.SomeEvent += OnSomeEvent;
  }
  private void OnSomeEvent(...){...}
}

长期服务将引用儿童对象,该对象在范围内之前应从活动中取消订阅。您可以使用处置模式避免这种情况。您可以使用像蚂蚁内存探测器这样的工具来跟踪它们。通常,如果您要订阅自己的实例中的事件,则问题不存在(因为订阅者和订户都可以用于垃圾收集)。

相关内容

最新更新