2022年代码最优化.NET中的内存管理C语言教程.docx

上传人:l*** 文档编号:81149096 上传时间:2023-03-24 格式:DOCX 页数:5 大小:12.82KB
返回 下载 相关 举报
2022年代码最优化.NET中的内存管理C语言教程.docx_第1页
第1页 / 共5页
2022年代码最优化.NET中的内存管理C语言教程.docx_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年代码最优化.NET中的内存管理C语言教程.docx》由会员分享,可在线阅读,更多相关《2022年代码最优化.NET中的内存管理C语言教程.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022年代码最优化.NET中的内存管理C语言教程在.NET中,内存管理是自动进行的。内存的再收集属于后台任务,这使开发者们更专注于手边的工作。在这篇文章中,我们来看一看为开发者供应帮助并且限制垃圾收集的接口。 处理设计模式(Dispose design pattern): IDisposable, Dispose, Finalize 共同语言运行时(CLR)无法清理数据库连接、窗口句柄、文件句柄一类的资源。因此,为开发者供应清理这类难管理的资源的机制是很有必要的。清理工作可以在Finalize方法中实现,Finalize方法在C#语言中被实现为垃圾破坏者。该方法的调用在垃圾收集器的限制下进行

2、。 通常,你会须要一个确定的方法来清理像文件句柄一类难管理的资源。例如,现在你打开了一个文件进行写操作,当你结束将文件内容载入缓冲器后,你可能须要明确的关闭文件句柄。对于这类显式清理,.NET供应了处理设计模式(dispose design pattern) 须要进行显示清理的对象需实现IDisposable接口。IDisposable接口供应了Dispose方法,该方法不像Finalize方法,它不在开发者的限制之下。 既然Dispose方法的调用是显示清理,运用垃圾收集器收集这些对象没有必要。因此Dispose方法应当包含一个对GC.SuppressFinalize()的调用,提示垃圾收集

3、器在这个对象上不须要运用Finalize方法。 举荐在一个须要进行显示清理的对象上同时实现Finalize 和Dispose方法。Finalize方法在Dispose方法没有被调用时供应一个备份的机制。垃圾收集器将执行对象的终结和防止难管理的资源的永久性泄漏。 在 Listing A中的代码片断更清楚的描述了这些概念。 在Listing A中,SampleClass类运用了一个文件句柄,这是一个难管理的资源。因此,应为该对象实现IDisposable接口和供应Finalize方法。 用来清理文件句柄的代码是Dispose方法的一部分。GC.SuppressFinalize()在难管理资源被清除

4、时也将被调用。 该类同时供应了垃圾破坏器(Finalize方法),也包含了用于清理难管理资源(文件句柄)的代码。 弱引用 .NET框架供应了另一好玩的特色,被用于实现多样的高速缓存。在.NET中弱引用通过System.WeakReference类实现。弱引用为引用的对象供应一项机制,使被引用的对象能够被垃圾收集器作用。ASP.NET高速缓存就运用了弱引用。假如内存运用率太高,高速缓存将被清除。 强制垃圾收集.NET框架为开发者供应System.GC类来限制垃圾收集器的一些方面。垃圾收集可以通过调用GC.Collect方法强制执行。通常建议不要手动的调用垃圾收集器,而将其设置为自动方式。在某些状

5、况下,开发者会发觉强制垃圾收集将推动性能。但是,运用这个方法须要特别当心,因为在垃圾收集器运行时将延缓当前执行的线程。GC.Collect方法不应位于可能被常常调用的地方。这样做将使应用程序的性能降级。 .NET中的服务器和工作站版本.NET构架包括相同的CLR的两种版本,分别对应于特定的目的。将他们分类为服务器运行时和工作站运行时,并分别在mscorsvr.dll和mscorwks.dll中实现。服务器版的CLR利用多处理技术使垃圾收集可以并行的完成。在单处理器环境运用工作站版本而不能运用服务器版本。 同样,对于垃圾收集器有高级设置项:concurrent garbage collectio

6、n和nonconcurrent garbage collection。nonconcurrent设置用于服务器环境,这时应用程序无需做出响应。Concurrent设置运用在客户端环境中,这时用户界面被显示且应用程序需做出响应 Microsoft在Visual Studio.NET项目模块上创建了一些缺省设置,ASP.NET应用程序能够利用多处理器与装载CLR的服务器版本。但是,由于Windows客户端通常是胖客户端,它将装载CLR的工作站版本。 可以运用CorBindToRuntimeEx API来覆盖这些设置和限制在多处理器环境中将加载哪种版本的CLR 工作效率在两种版本的CLR中协作运用处理设计模型,开发者可以清理难于管理的资源。.NET框架供应面对垃圾收集的构架,将开发者从内存整理工作中解脱出来。这时,开发者只须要管理他运用过某些资源,因此使得工作变得简易同时提高了工作效率。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁