- 8
- 0
- 约1.53万字
- 约 27页
- 2017-11-10 发布于江苏
- 举报
NETFramework垃圾回收Version
垃圾回收
Framework 3.5 version
Author: Jerry Huang
目录
垃圾回收概述
Finalize方法和析构函数
弱引用
被动回收
滞后时间模式
针对共享WEB宿主优化
垃圾回收通知
清理非托管资源
参考 C# 析构函数
参考 WeakReference类
11.参考 垃圾回收内部原理
垃圾回收
.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行时都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行时就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。
本节介绍了垃圾回收器如何自动管理应用程序中托管对象的内存分配和释放。除此之外,本节还介绍了推荐的设计模式,以用来正确地清理应用程序创建的任何非托管资源。
说明: 在 .NET Framework 1.0 版中,公共语言运行时 (CLR) 具有一个用于大型对象堆的独立内存管理器。在某些情况下,该内存管理器不将未使用的内存返回给操作系统,在少数情况下,它还会使该内存不能垃圾回收。这样会由于虚拟地址空间碎片而导致内存分配失败。在 .NET Framework 1.1 和 2.0 版中,大型对象堆由称为堆片段的连续内存区域组成,这些区域完全对齐以使虚拟内存碎片减到最少。在垃圾回收过程中,从大型对象中回收的空间被合并起来并置于自由列表中。只包含自由列表项的堆片段被释放,内存被返回给操作系统。对大型对象堆所做的这些更改有效消除了由这种形式的虚拟地址空间碎片导致的内存分配故障。 重要说明: 在内存大于 2GB 的服务器中,可能需要在 boot.ini 文件中指定 /3GB 开关,以避免当内存仍可供系统使用时出现明显的内存不足问题。 ?
本节内容
Finalize 方法和析构函数
介绍 Finalize 方法和析构函数如何允许对象在垃圾回收器自动回收对象的内存之前执行必要的清理操作。
弱引用
介绍允许应用程序访问对象,同时也允许垃圾回收器收集该对象的功能。
被动回收
介绍如何立即或在下一最佳时间回收对象。
滞后时间模式
介绍可确定垃圾回收侵入性的模式。
针对共享 Web 宿主优化
介绍在通过承载若干个小型网站共享的服务器上如何优化垃圾回收。
垃圾回收通知
介绍如何确定完整垃圾回收何时即将发生以及何时完成。
清理非托管资源
介绍推荐的清理非托管资源的设计模式。
Finalize 方法和析构函数
对于您的应用程序创建的大多数对象,可以依靠 .NET Framework 的垃圾回收器隐式地执行所有必要的内存管理任务。但是,在您创建封装非托管资源的对象时,当您在应用程序中使用完这些非托管资源之后,您必须显式地释放它们。最常见的一类非托管资源就是包装操作系统资源的对象,例如文件、窗口或网络连接。虽然垃圾回收器可以跟踪封装非托管资源的对象的生存期,但它不了解具体如何清理这些资源。对于这些类型的对象,.NET Framework 提供 Object.Finalize 方法,它允许对象在垃圾回收器回收该对象使用的内存时适当清理其非托管资源。默认情况下,Finalize 方法不执行任何操作。如果您要让垃圾回收器在回收对象的内存之前对对象执行清理操作,您必须在类中重写 Finalize 方法。
说明: 若要在 C# 中 Finalize 方法,您必用析构函数。在 .NET Framework 2.0 版中,Visual C++ Finalize 方法提供了自己的Destructors and Finalizers in Visual C++中的介 .NET Framework 1.0 版和 1.1 版中,Visual C++ 与 C# 一 Finalize 方法使用析构函数
垃圾回收器使用名为“终止队列”的内部结构跟踪具有 Finalize 方法的对象。每次您的应用程序创建具有 Finalize 方法的对象时,垃圾回收器都在终止队列中放置一个指向该对象的项。托管堆中所有需要在垃圾回收器回收其内存之前调用它们的终止代码的对象都在终止队列中含有项。
说明: 为 GC.KeepAlive 方法提供的代码示例演示攻击性垃圾回收如何会导致终结器在已回收的对象的成员仍在执行时运行,以及如何使用 KeepAlive 方法来阻止这种情况的发生。
Finalize 方法不应引发异常,因为应用程序无法处理这些异常,而且这些异常会导致应用程序终止。
实现 Finalize 方法或析
您可能关注的文档
最近下载
- 2026中国建设银行远程智能银行中心客服代表社会招聘200人(广州20人)参考考试题库附答案解析.docx VIP
- 儿童身高管理.pptx VIP
- 2026中国建设银行远程智能银行中心客服代表社会招聘200人(广州20人)参考考试试题附答案解析.docx VIP
- 2026至未来5年中国冲压端子市场数据分析及竞争策略研究报告.docx
- 《电梯触摸屏操控终端技术要求》.docx VIP
- 上海大学继续教育市场营销网课答案更新版.pdf VIP
- 2026中国建设银行远程智能银行中心客服代表社会招聘200人(广州20人)备考考试试题及答案解析.docx VIP
- 2026中国建设银行远程智能银行中心客服代表社会招聘200人(广州20人)考试备考题库附答案解析.docx VIP
- 2021 年全国一级建造师考试执业资格考试法规-白金卷.docx VIP
- 中国燃料电池汽车产业发展白皮书(2025年).docx
原创力文档

文档评论(0)