CLR的终结操作Finalizer
来源:互联网 发布:杰克逊总统知乎 编辑:程序博客网 时间:2024/06/03 14:05
终结操作的步骤:
.NET2.0中CLR的 终结操作Finalizer非常有用,可以确保托管对象在释放内存的同时不会泄漏本地资源。
以下是《框架设计(第2版):CLR Via C# 》相关章节的总结,图取自该书。
1在一个对象被new之前,如果该对象的类定义了Finalizer方法,则该对象的一个指针被放到终结链表中。
2在回收器开始工作时,遍历堆中不可达对象,将其视为可回收的垃圾。同时搜索终结链表,如果终结链表有不可达对象的指针,则该对象不能马上被释放,因为在释放之前必须调用Finalizer方法。该对象的指针被转移至终结可达队列中,暂时不释放其内存。
3所有不可达的没有Finalizer方法的对象被垃圾回收器回收后,含有Finalizer方法的对象调用Finalizer方法,称为真正的垃圾。等待下一次的垃圾回收。
- CLR的终结操作Finalizer
- 防范java代码的 finalizer() 终结器攻击
- java中finalizer终结方法学习心得
- java中finalizer终结方法学习心得
- 高效Java07:避免使用终结方法(finalizer)
- 方法finalizer()的应用
- C# 析构函数(Destructor)和终结器(Finalizer)——托管资源的释放
- finalizer
- C#析构函数(destructor)和终结器(Finalizer)
- C# 析构函数(destructor)和终结器(Finalizer)
- C#析构函数(destructor)和终结器(Finalizer)
- Java的Finalizer引发的内存溢出
- C++ local class 的用途:finalizer 手法
- C++ local class 的用途:finalizer 手法
- C++ local class 的用途:finalizer 手法
- C++ local class 的用途:finalizer 手法
- C++ local class 的用途:finalizer 手法
- C++ local class 的用途:finalizer 手法
- Python_mysql for win32 配置篇(一)
- Swing开篇
- 重复提交、重复刷新、防止后退的问题以及处理方式
- 2007.3.7--C++学习日记--MFC--ZeroMemory宏
- MaxLengthTextField
- CLR的终结操作Finalizer
- 可选边框的Border
- VBA中关IP地址正确性的检查
- birt简单步骤
- 2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
- 用MS.NET开发三层结构应用程序
- 可以显示横向ScrollBar的下拉框ComboBox
- 刚才写了一堆,怎么不见了
- js submit() 对象不支持此属性或方法