代码最优化.NET中的内存办理C言语教程-Java-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝26
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:176回复:0

  代码最优化.NET中的内存办理C言语教程

楼主#
更多 发布于:2016-05-31 16:44

在.NET中,内存办理是主动进行的。内存的再搜集归于后台任务,这使开发者们更专心于手边的作业。在这篇文章中,咱们来看一看为开发者供给协助而且操控废物搜集的接口。

处理规划形式(Dispose        

design pattern): IDisposable, Dispose, Finalize      

共同言语运行时(CLR)无法整理数据库衔接、窗口句柄、文件句柄一类的资本。因而,为开发者供给整理这类难办理的资本的机制是很有必要的。整理作业能够在Finalize办法中完结,Finalize办法在C#言语中被完结为废物损坏者。该办法的调用在废物搜集器的操控下进行。

一般,你会需求一个断定的办法来整理像文件句柄一类难办理的资本。例如,如今你打开了一个文件进行写操作,当你完毕将文件内容载入缓冲器后,你也许需求明晰的封闭文件句柄。关于这类显式整理,.NET供给了处理规划形式(dispose

        design pattern)

需求进行显现整理的目标需完结IDisposable接口。IDisposable接口供给了Dispose办法,该办法不像Finalize办法,它不在开发者的操控之下。

既然Dispose办法的调用是显现整理,运用废物搜集器搜集这些目标没有必要。因而Dispose办法应当包含一个对GC.SuppressFinalize()的调用,提示废物搜集器在这个目标上不需求运用Finalize办法。

推荐在一个需求进行显现整理的目标上一起完结Finalize

和Dispose办法。Finalize办法在Dispose办法没有被调用时供给一个备份的机制。废物搜集器将执行目标的终结和避免难办理的资本的永久性走漏。

Listing        

A中的代码片断更明晰的描述了这些概念。

在Listing

A中,SampleClass类运用了一个文件句柄,这是一个难办理的资本。因而,应为该目标完结IDisposable接口和供给Finalize办法。

用来整理文件句柄的代码是Dispose办法的一部分。GC.SuppressFinalize()在难办理资本被铲除时也将被调用。

该类一起供给了废物损坏器(Finalize办法),也包含了用于整理难办理资本(文件句柄)的代码。

弱引证

.NET结构供给了另一风趣的特色,被用于完结多样的高速缓存。在.NET中弱引证通过System.WeakReference类完结。弱引证为引证的目标供给一项机制,使被引证的目标能够被废物搜集器效果。ASP.NET高速缓存就运用了弱引证。假如内存运用率太高,高速缓存将被铲除。

强行废物搜集

.NET结构为开发者供给System.GC类来操控废物搜集器的一些方面。废物搜集能够通过调用GC.Collect办法强行执行。一般建议不要手动的调用废物搜集器,而将其设置为主动办法。在某些情况下,开发者会发现强行废物搜集将推动功能。可是,运用这个办法需求十分当心,因为在废物搜集器运行时将推迟当前执行的线程。GC.Collect办法不该坐落也许被经常调用的当地。这么做将使应用程序的功能降级。

.NET中的服务器和作业站版别

.NET构架包含一样的CLR的两种版别,分别对应于特定的意图。将他们分类为服务器运行时和作业站运行时,并分别在mscorsvr.dll和mscorwks.dll中完结。服务器版的CLR利用多处理技能使废物搜集能够并行的完结。在单处理器环境运用作业站版别而不能运用服务器版别。

相同,关于废物搜集器有高档设置项:concurrent garbage

collection和nonconcurrent           garbage

collection。nonconcurrent设置用于服务器环境,这时应用程序无需做出呼应。Concurrent设置运用在客户端环境中,这时用户界面被显现且应用程序需做出呼应

Microsoft在Visual

Studio.NET项目模块上创建了一些缺省设置,ASP.NET应用程序能够利用多处理器与装载CLR的服务器版别。可是,因为Windows客户端一般是胖客户端,它将装载CLR的作业站版别。

能够运用CorBindToRuntimeEx

API来掩盖这些设置和操控在多处理器环境中将加载哪种版别的CLR

作业效率

在两种版别的CLR中合作运用处理规划模型,开发者能够整理难于办理的资本。.NET结构供给面向废物搜集的构架,将开发者从内存整理作业中摆脱出来。这时,开发者只需求办理他运用过某些资本,因而使得作业变得简便一起提高了作业效率。

优质IT资源分享社区为你提供此文。

本站有大量优质Java教程视频,资料等资源,包含java基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。

java教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客