我有一个在多核4路服务器上运行的大型多线程C#应用程序。当前,我们正在使用“服务器模式”垃圾回收。但是测试显示工作站模式GC更快。
MSDN says:

但是我们看不到性能出色!!!!有没有人得到任何建议?

最佳答案

它的解释不是很好,但是据我所知,服务器模式是每个内核同步的,而工作站模式是异步的。

换句话说,工作站模式适用于少量需要长时间运行且需要一致性能的应用程序。垃圾收集试图“远离”,但结果平均效率较低。

服务器模式适用于每个“工作”生命周期较短且由单个内核处理的应用程序(编辑:认为多线程Web服务器)。这个想法是,每个“工作”都具有所有的CPU能力,并且很快就可以完成,但是偶尔内核会停止处理请求并清理内存。因此,在这种情况下,希望平均来说GC效率更高,但是内核在运行时不可用,因此应用程序必须能够适应这种情况。

在您的情况下,这听起来像是,因为您有一个线程相对耦合的单个应用程序,所以您更适合第一种模式而不是第二种模式期望的模型。

但这仅是事后证明。衡量系统的性能(如ammoQ所说,不是您的GC性能,而是您的应用程序的运行状况),并使用您认为最好的方法。

关于c# - 我们应该使用 “workstation”垃圾收集还是 “server”垃圾收集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1707240/

10-10 04:44