.net GC中的平均时间

.net GC中的平均时间,.net,garbage-collection,.net,Garbage Collection,在.NET应用程序中,在GC中显示当前百分比很容易,但是如何在GC中显示平均时间或事件总时间,以便您可以查看完整的场景并衡量您是否真的改进了内容 %GC中的时间定义为: GC中的时间百分比 显示自上一个垃圾收集周期以来执行垃圾收集所用的时间百分比。此计数器通常指示垃圾收集器代表应用程序收集和压缩内存所做的工作。此计数器仅在每次垃圾收集结束时更新。此计数器不是平均值;其值反映了最后观察到的值。”如果您有兴趣测量在GC中花费的时间,可以通过ETW获得该数据。PerfMonitor将为您收集并显示该数

在.NET应用程序中,在GC中显示当前百分比很容易,但是如何在GC中显示平均时间或事件总时间,以便您可以查看完整的场景并衡量您是否真的改进了内容

%GC中的时间定义为:

GC中的时间百分比
显示自上一个垃圾收集周期以来执行垃圾收集所用的时间百分比。此计数器通常指示垃圾收集器代表应用程序收集和压缩内存所做的工作。此计数器仅在每次垃圾收集结束时更新。此计数器不是平均值;其值反映了最后观察到的值。”

如果您有兴趣测量在GC中花费的时间,可以通过ETW获得该数据。PerfMonitor将为您收集并显示该数据-请查看MSDN杂志的这篇文章以获取介绍:。

如果您有兴趣测量在GC中花费的时间,可以通过ETW获得该数据。PerfMonitor将为您收集并显示这些数据-请查看MSDN杂志的这篇文章,了解简介:。

GC是不确定的。因此,很难进行优化,因为根据应用程序运行的时间和每代应用程序的大小,您将获得不同的结果


一种更简单的方法——老实说,更可靠——是计算在特定方法中创建的对象的数量。最佳实践(如不在循环中创建对象等)将有所帮助

GC是不确定的。因此,很难进行优化,因为根据应用程序运行的时间和每代应用程序的大小,您将获得不同的结果


一种更简单的方法——老实说,更可靠——是计算在特定方法中创建的对象的数量。最佳实践(如不在循环中创建对象等)将有所帮助

某些版本的Visual Studio内置了探查器。还有第三方剖析器,免费的和花钱的。分析器可以显示您在GC中花费的时间百分比


编辑对于在任何旧线程(包括GC线程)中花费的CPU时间,存在一些常见的误解。例如,可以锁定GC线程使用的同步对象。在这种情况下,GC将处于备用状态,但不会产生可测量的CPU时间。如果没有适当的工具,这些场景很难检查。

某些版本的Visual Studio内置了探查器。还有第三方剖析器,免费的和花钱的。分析器可以显示您在GC中花费的时间百分比


编辑对于在任何旧线程(包括GC线程)中花费的CPU时间,存在一些常见的误解。例如,可以锁定GC线程使用的同步对象。在这种情况下,GC将处于备用状态,但不会产生可测量的CPU时间。如果没有合适的工具,这些场景很难检查。

同意唯一合理的选择是减少垃圾收集。同意唯一合理的选择是减少垃圾收集。实际上我需要总时间。Process Explorer显示GC中的%时间,而不是总时间:(@pablo请查看我的编辑。您可能会注意到VS Profiler比windows API更易于直接使用。实际上,我需要总时间。Process Explorer显示GC中的%时间,而不是总时间:(@pablo请看一看我的编辑。你可能会注意到VS Profiler比直接使用windows API更令人愉快。