当前位置:主页   - 电脑 - 程序设计 - C#
CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列)
来源:网络   作者:   更新时间:2012-02-26
收藏此页】    【字号    】    【打印】    【关闭

  CLR中的GC,存在着两种Mode。Server Mode的GC和Workstation Mode的GC。同时,在有些情况下,还会遇到并发的GC。

  Server GC只适合于在多CPU的主机上面使用。这种GC模式,为每一个处理器都独立的创建一个GC Heap,这样就可以进行并发的同步的收集。这样做的好处也是显而易见的:在相同的时间里面可以处理更多的用户请求。切实的带来性能的成倍提升。同时,这中模式相对于在多处理器下使用并发模式更加的有效。

  而Workstation Mode GC,它适合于单处理器的machine。同时它也是默认的GC模式。

  这里,还要说到一种并发式的GC,也就是在多处理器的machine上面配置的是Workstation Mode GC模式的时候GC的操作方式。在多处理器上面的应用程序运行的时候,它可以并发收集,来减少request的等待时间。这种模式,比较适合于有图形用户接口的应用程序或者是对实时性要求很高的系统。

  对于Server GC的实现,是在MScorSvr.dll里面的。而对于Workstation GC的实现,是封装在MsCorWks.dll中的。知道了这些,对于判断咱电脑上运行的是Server GC还是Wrokstation GC的判断也比较简单,用tasklist命令就可以了:

>tasklist /m mscorwks.dll
Image Name            PID     Modules
 OUTLOOK.EXE        3352    mscorwks.dll
mmc.exe               2084    mscorwks.dll
w3wp.exe               3436    mscorwks.dll

  或者,也可以到管理工具中查看系统配置。控制面板里面的管理工具,然后打开Microsoft .NET Framework 2.0 Configuration。查看我的电脑的属性:

CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列)

  默认情况下的配置,就是使用Wrokstation GC。

  另外一个比较特别也比较普遍的使用方式,就是在一个非宿主托管应用程序,也就是一个用户App,的配置文件里面,可以手工的增加一个配置节点来改变这个GC的mode:

<configuration>
 <runtime>
  <gcServer enabled="true" />
 </runtime>
</configuration>

  这里,需要特别指出来一下,这里说明的是非寄宿的应用程序。如果运行的应用程序是Hosted,这个时候,host的对于GC的配置,就会覆盖这个.config文件里面关于GC模式的配置。

  在配置使用这些模式的时候,如果是单处理器的machine,就使用Workstation GC。如果是多处理器的时候,如果是看中整个系统的吞吐量,就可以使用Server GC。如果是看中整个系统的实时响应特征,则可以选择并发模式的GC。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明