2010年12月6日

CLR via C# 读书笔记 5-2 为什么不使用Finalize

摘要: 1.在创建对象的时候,Finalize需要更多的时间, 因为需要把对象放到Finalization List 中2.Finalize会让你的应用程序运行的更慢,因为在GC的时候需要对每个对象执行额外的检查3.Finalize会对内存造成更大的压力(Heap的内存分配问题)4.Finalize执行时间是不确定的,如果是使用需要独占的资源例如File, 那么下一个想使用文件的人无法确定什么时候才能使用它所需要的文件, 这种情况还是尽快使用Dispose或者Close释放资源比较好,这同时意味着,你无法手动控制Finalize的执行和它的执行顺序PS:什么时候执行Finalize1.托管堆中0代 阅读全文

posted @ 2010-12-06 13:12 听说读写 阅读(355) 评论(0) 推荐(0) 编辑

CLR via C# 读书笔记 5-1 何时对托管资源使用Finalize

摘要: Finalize方法常用于回收非托管资源,以防止资源泄露在较少的情况下它也会被用于托管资源1.构造函数中如果抛出异常, 那么只有Finalize方法才会被执行,在这里可以回收一些已经分配的资源(Dispose不会被执行!!!)当然:Finalize方法的执行时间还是下一次GC的时候(依然不确定时间)如果不实现该方法将会造成资源泄露以下代码演示了在这种情况代码所以一般情况下为了完全避免资源泄露例如Memory leak, 通常将类实现为以下的方式代码 阅读全文

posted @ 2010-12-06 11:37 听说读写 阅读(447) 评论(0) 推荐(0) 编辑

导航