VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • CLR探索系列Server and Workstation Garbage Collection 垃圾回收系列

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  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。



相关教程