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

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。查看我的电脑的属性:

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

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

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

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

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

时间: 2024-11-10 00:00:58

CLR探索系列-Server and Workstation Garbage Collection探索(垃圾回收系列)的相关文章

CLR探索系列-GC Heap架构及其实现(垃圾回收系列)

在CLR探索系列的研究DotNet下的垃圾回收器这几个博文里,就先说说GC Heap结构吧,至于垃圾回收的详析算法实现,以后再写了.在一个托管进程被创建以后,在托管进程的内存空间里面,包含了System Domain,Shared Domain,Default Domain,以及一系列的Heap,有Process的Heap,JIT Code Heap,GC Heap以及LOH.在DotNet的CLR的实现中,GC heap和LOH(Large Object Heap)是包含在一个类里面实现的.这

CLR探索系列-GC中的Card table和Brick Table(垃圾回收系列)

在CLR的垃圾回收子系统中,Card Table和Brick Table是两个比较有意思的表. 在GC的过程中,一个Heap在运行了一段时间以后,已经分配的空间就会越来越大.在进行了一次局部代或者是完全的垃圾回收以后,就会涉及到一个GC堆的类似碎片整理的概念.整理优化一次GC Heap.同时,这种机制保证了譬如一个IIS Server在长时间的运行过程中的稳定性并且优化了其内存管理. 这样的好处是显而易见的,但是采用这种解决方案带来的问题也很容易想到:譬如一个存在于GC Heap里面的"Smal

细述 Java垃圾回收机制→Java Garbage Collection Introduction

计划写一个介绍Java垃圾回收基础的系列文章,共分四部分: Java垃圾回收简介 Java垃圾回收器是如何工作的? 各种类型的Java垃圾回收器 Java垃圾回收的监控和分析 本文是这个系列的第一篇文章,这篇文章将会介绍一些基本术语,如:JDK,JVM,JRE,HotSpot VM,以及理解JVM的架构和Java堆内存结构.在开始学习Java垃圾回收机制之前确实有必要了解一下这些基本东西. 关键的Java术语 Java API–一个帮助程序员创建Java应用的打包好的库集合 Java Devel

通过CLR同步SQL Server和Sharepoint List数据(三)

写在前面 本系列文章一共分为四部分: 1. CLR概述. 2. 在Visual Studio中进行CLR集成编程并部署到SQL Server,包括存储过程 .触发器.自定义函数.自定义类型和聚合. 3. CLR集成编程的调试和所遇到的问题. 4. 利用CLR同步SQL Server表和Sharepoint List(来源于实际项目应用). 本系列文章建立在以下软件环境的基础上: Windows Server 2003 Enterprise Edition Service Pack 2 Micro

通过CLR同步SQL Server和Sharepoint List数据(二)

写在前面 本系列文章一共分为四部分: 1. CLR概述. 2. 在Visual Studio中进行CLR集成编程并部署到SQL Server,包括存储过程 .触发器.自定义函数.自定义类型和聚合. 3. CLR集成编程的调试和所遇到的问题. 4. 利用CLR同步SQL Server表和Sharepoint List(来源于实际项目应用). 本系列文章建立在以下软件环境的基础上: Windows Server 2003 Enterprise Edition Service Pack 2 Micro

通过CLR同步SQL Server和Sharepoint List数据(一)

写在前面 本系列文章一共分为四部分: 1. CLR概述. 2. 在Visual Studio中进行CLR集成编程并部署到SQL Server,包括存储过程 .触发器.自定义函数.自定义类型和聚合. 3. CLR集成编程的调试和所遇到的问题. 4. 利用CLR同步SQL Server表和Sharepoint List(来源于实际项目应用). 本系列文章建立在以下软件环境的基础上: Windows Server 2003 Enterprise Edition Service Pack 2 Micro

细述 Java垃圾回收机制→Java Garbage Collection Monitoring and Analysis

Java垃圾回收监控和分析工具 Java VisualVM Naarad GCViewer IBM Pattern Modeling and Analysis Tool for Java Garbage Collector HPjmeter IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory Visualizer Verbose GC Analyzer Java VisualVM Java Vi

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言:PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection).现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完全兼容.PHP5.3在PHP5.2的基础上做了诸多改进,其中垃圾回收算法就属于一个比较大的改变.本文将分别

Garbage Collection

3)Garbage Collection State the behavior that is guaranteed by the garbage collection system and write code that explicitly makes objects eligible for collection. 1.    Garbage collection is a mechanism for reclaiming memory from objects that are no l