我有一个C#Windows服务,我最近从.NET 3.5迁移到.NET 4.0.没有进行其他代码更改.
在3.5上运行时,给定工作负载的内存利用率约为1.5 GB内存,吞吐量为每秒20 X. (在这个问题的背景下,X无关紧要.)
在4.0上运行的完全相同的服务使用3GB到5GB +的内存,并且每秒小于4X.事实上,随着内存使用量继续攀升,该服务通常会停止运行,直到我的系统以99%的利用率选址并且页面文件交换变得疯狂.
我不确定这是否与垃圾收集有关,或者是什么,但我无法搞清楚.我的窗口服务通过下面的配置文件开关使用"Server"GC:
<runtime>
<gcServer enabled="true"/>
</runtime>
Run Code Online (Sandbox Code Playgroud)
将此选项更改为false似乎没有任何区别.此外,从我在4.0中的新GC上完成的阅读中,大的变化只影响工作站GC模式,而不影响服务器GC模式.因此GC可能与此问题无关.
想法?