0
Employee obj = new Employee();
obj.Dispose(); //statement 1;
obj = null; //statement 2
GC在哪个语句中删除该对象?.NET垃圾回收器什么时候会释放这个对象?
究竟是什么将在声明中1和语句2
Employee obj = new Employee();
obj.Dispose(); //statement 1;
obj = null; //statement 2
GC在哪个语句中删除该对象?.NET垃圾回收器什么时候会释放这个对象?
究竟是什么将在声明中1和语句2
发生在幕后它可以是任何的,或根本没有。
如果默认构造函数和Dispose
方法没有副作用,并且编译器可以看到它,那么它可以完全跳过代码生成,因为整个事物都是无操作的。
另外,如果只有Dispose
方法是无操作,那么GC可能只是这一行后收集的对象:
Employee obj = new Employee();
或者,如果GC能够证明对象永远不会再次读取Dispose
(even if it's still in scope)之后,它可能只是该行后收集的对象:
obj.Dispose();
或者,如果GC不能证明任何的这些,可能这行后做的任何时间:
obj = null;
备选地,如果GC没有看到任何压力的程序的整个执行过程中回收存储器,it might not collect the object at all。
你在说什么语言? –
@FelipeSulser in .net – manish