IIS托管的WCF服务正在消耗大容量内存,如18 GB,服务器速度已经放慢。
我分析了Mini转储文件,它只显示1 GB或活动对象。我知道GC没有清除内存,GC必须在64位系统的服务器模式下运行。知道为什么整个计算机都停滞不前,应用程序占用了大量内存吗?
答案 0 :(得分:0)
GC在服务器模式下运行,它配置为更好的性能。我理解在服务器模式下运行GC会有性能提升,因为GC不会因为高可用内存而频繁触发,而在服务器模式下,它会对内存使用有很高的限制。这里的问题是当CLR触发GC的过程达到上限时,它试图一次性清除巨大的18 GB内存,因此它使用了90%的系统资源,其余应用程序滞后。
我们尝试重新启动,但它一直在继续,所以我们不得不杀死这个过程。现在使用Workstation模式GC平稳而干净。唯一的区别是响应时间因1.5 GC分配后的GC而有一些延迟。
还有一个信息:.NET 4.5版本有关于此的修订,已在GC中解决了这个问题。