.net 垃圾收集和高 CPU

Posted

技术标签:

【中文标题】.net 垃圾收集和高 CPU【英文标题】:.net garbage collection and high cpu 【发布时间】:2013-11-01 04:34:24 【问题描述】:

.net 垃圾回收不运行的条件是什么?高 cpu 使用率会阻止垃圾收集运行吗?

我正在使用 Visual 2010 .net 4 进行一个非常大的项目, 我添加了项目的新部分,现在对其进行性能测试。 在测试期间,我发现当我将客户端置于高负载下时,几乎 100% cpu 一直,内存就像有泄漏一样。经过多次测试但没有发现任何结果,我使用了 ANTS 分析器,发现比我每 5 分钟拍摄一次快照时,内存的行为像往常一样。 ANTS 强制垃圾收集工作,所以我提出了这个问题, .net 垃圾收集是否在不中断应用程序运行的情况下无法在高 cpu 中工作?

【问题讨论】:

使用 Perfview 分析 GC 事件:channel9.msdn.com/Series/PerfView-Tutorial/…channel9.msdn.com/Series/PerfView-Tutorial/… 【参考方案1】:

检查问题后,我得出的结论是高 CPU 导致 GC 无法正常工作。 我每隔几分钟调用一次GC来测试它,内存保持在它应该的低水平(在程序的正常运行中)。在它之后,我将程序的主要瓶颈分叉到几个核心。 cpu 下降,内存在 c# 和 .net 中再次表现良好 - 在恒定范围内上下波动。

【讨论】:

以上是关于.net 垃圾收集和高 CPU的主要内容,如果未能解决你的问题,请参考以下文章

垃圾收集器

如何弄清楚为啥垃圾收集器使用了我 90% 的 CPU?

垃圾收集器

垃圾收集器

垃圾收集器

垃圾收集器