我一直在阅读有关.NET CLR内存性能计数器的信息
http://msdn.microsoft.com/en-us/library/x2tyfybc(v=vs.110).aspx
许多专柜都有以下警告:
This counter is updated at the end of a garbage collection, not at each allocation.
我发现了一个应用程序的内存泄漏,并检查了所有堆上的gen 0堆大小,gen 1,#bytes,它们显示为0.这可信吗?如何区分以下两种情况?
答案 0 :(得分:3)
我会把钱花在上面1)垃圾收集还没有发生。
我已经比较了以下两种情况的性能监视器输出:
static void Main(string args[])
{
Console.ReadLine();
}
在这种情况下,性能监视器在所有堆中显示0个字节。
用这个显示所有堆中的22,496个字节。
static void Main(string args[])
{
GC.Collect();
Console.ReadLine();
}
这表明即使是没有直接分配内存的空app也会有一些堆分配。
您可以通过在代码中的某个位置拨打GC.Collect
来测试此问题。