|
|
1
17
当垃圾收集器决定必须清理一些旧对象时,将调用析构函数。不能依赖.NET中的析构函数执行时间 如果您不需要某些资源(尤其是在您有任何非托管资源(如TCP连接、SQL连接等)时,您应该使用Dispose(),而不是使用Dispose()。 |
|
|
2
3
如果管理对象的生存期至关重要,请从IDisposible继承,然后可以使用 using keyword . |
|
|
3
2
在实例可用于垃圾收集之后,在某个时间点调用析构函数或终结器,因为它们也被命名。它不会像C++那样在一个确定的时间点发生。 |
|
|
4
2
析构函数(或终结器,有些人更喜欢称之为终结器)完全在单独的线程上运行。它们不在特定时间运行。它们不能保证在应用程序生命周期结束前运行,即使这样,它们也可能不会被调用。 |
|
5
1
一旦垃圾收集器可以确定不再使用对象,将调用析构函数(终结器)。终结器在终结器线程上运行, 同时地 到你的主程序! 通过适当的优化(JIT编译器可以很容易地消除局部变量),这可能早于 里面 这个 第一 dosomeFunThingsWithMyObject调用(一旦该方法不再需要其参数),或在以后的任何时候调用。可能直到程序关闭后才调用它(在极少数情况下,终结器是 从未 叫) |