如果我没有分配它,是一个类的实例保存在内存中吗?

时间:2016-05-02 12:01:37

标签: c# .net

在调用方法后,它是否在内存中保持分配?

private void AnyMethod()
{
  new AnotherClass().AnotherMethod();
}

2 个答案:

答案 0 :(得分:4)

调用该方法后,调用此方法的实例超出范围(因为它不再有任何指向它的引用),因此它有资格进行垃圾回收。因此,此实例将保留在内存中,直到实际的垃圾收集发生。此垃圾收集发生的确切时间当然取决于运行时的许多属性,如内存使用情况,......

答案 1 :(得分:3)

嗯,这取决于构造函数和该方法中的内容,但通常不是。

当方法调用结束时,实例化的类不再有任何引用,因此每当GC出现时它都可以被垃圾收集,这可能会因GC设置和内存压力而变化。

虽然您可以在构造函数或方法中执行类似的操作,但这会阻止实例超出范围:

SomeExternalClass.SomeInstance = this;